import java.util.concurrent.Executor;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors; public class homework514 {
//run()在完成时不会返回值,Callable接口的call()会产生返回值
public static class Run_test implements Runnable{//使用Runnable接口的run()方法{多线程合作完成任务}
private static int taskCount = 0;
private int priority;
private final int id = taskCount++;//线程id
public Run_test(int priority){
this.priority = priority;
}
public String dispaly(){//多线程就应该在run里面输出
return "线程id:"+id+"优先级:"+priority;
}
public void run(){
Thread.currentThread().setPriority(priority);//run()中是多个线程需要完成的任务
System.out.println(dispaly());
Thread.yield();//线程调度器
}
}
public static Thread getThreadName(String threadName) {
Thread t = new Thread(threadName);
while(true){
//根据线程名取得线程
if (t.getName().equals(threadName)){ return t;
}
return null;
}
} static class Runner_extend_test extends Thread{//多线程各自完成任务
private int countDown=5;
private String name;
public Runner_extend_test(String name){
this.name = name;
}//以倒计时为例子
public String dispaly(){//多线程就应该在run里面输出
return name+":"+(countDown>0?countDown:"GO!"); }
public void run() {
while (countDown-- > 0) {
System.out.println(dispaly());
}
} } public static void main(String[] args)
{ /*
for(int i=1;i<=5;i++)//未设置优先级
{
Thread t = new Thread(new Run_test());//提交给Thread构造器
t.start();
}
*/
/*
//创建一个线程集
ExecutorService exec = Executors.newFixedThreadPool(5);//预先限制数量
for(int i=1;i<=5;i++){
exec.execute(new Run_test());
}
exec.shutdown();
*/
/*
//序列化线程,每一个线程会在下一个线程运行前结束
ExecutorService exec = Executors.newSingleThreadExecutor();//预先限制数量
for(int i=1;i<=5;i++){
exec.execute(new Run_test());
}
exec.shutdown();
*/
/*
//设置线程优先级
ExecutorService exec = Executors.newCachedThreadPool();
Run_test one = new Run_test(Thread.MAX_PRIORITY);
Run_test two = new Run_test(Thread.MIN_PRIORITY);
Run_test three = new Run_test(Thread.NORM_PRIORITY);
exec.execute(one);//10
exec.execute(two);//1
exec.execute(three);//5
System.out.println(getThreadName("one"));
exec.shutdown();
*/
//启动继承Thread的线程
Runner_extend_test run_1=new Runner_extend_test("线程1");
Runner_extend_test run_2=new Runner_extend_test("线程2");
Runner_extend_test run_3=new Runner_extend_test("线程3"); run_1.start();
run_2.start();
run_3.start();
}
}

  一切都在代码中

java 线程理解的更多相关文章

  1. java 线程 理解 解析

    1 线程的概述 进程:正在运行的程序,负责了这个程序的内存分配,代表了内存中的执行区域. 线程:就是在一个进程中负者一个执行路径. 多线程:就是在一个进程中多个执行路径同时执行. 假象: 电脑上的程序 ...

  2. java线程安全理解

    java线程安全理解 如果你的代码所在的进程中有多个线程在同时运行,而这些线程可能会同时运行这段代码.如果每次运行结果和单线程运行的结果是一样的,而且其他的变量的值也和预期的是一样的,就是线程安全的. ...

  3. Java进程线程理解

    一个进程包括由操作系统分配的内存空间,包含一个或多个线程.一个线程不能独立的存在,它必须是进程的一部分.一个进程一直运行,直到所有的非守护线程都结束运行后才能结束. 多线程能满足程序员编写高效率的程序 ...

  4. Java线程锁&分布式锁的理解及应用

    了解Java线程锁之前,先理解线程和进程的定义.进程是操作系统分配资源(CPU)的基本单位,线程是CPU执行的基本单位,一个进程可拥有多个线程,同进程间的多个线程共享分配给进程的资源.比如启动JVM时 ...

  5. 深入理解Java线程池:ScheduledThreadPoolExecutor

    介绍 自JDK1.5开始,JDK提供了ScheduledThreadPoolExecutor类来支持周期性任务的调度.在这之前的实现需要依靠Timer和TimerTask或者其它第三方工具来完成.但T ...

  6. Java线程工作内存与主内存变量交换过程及volatile关键字理解

    Java线程工作内存与主内存变量交换过程及volatile关键字理解 1. Java内存模型规定在多线程情况下,线程操作主内存变量,需要通过线程独有的工作内存拷贝主内存变量副本来进行.此处的所谓内存模 ...

  7. 干货,阿里P8浅谈对java线程池的理解(面试必备)

    线程池的概念 线程池由任务队列和工作线程组成,它可以重用线程来避免线程创建的开销,在任务过多时通过排队避免创建过多线程来减少系统资源消耗和竞争,确保任务有序完成:ThreadPoolExecutor ...

  8. 深入理解 Java 线程池

    一.简介 什么是线程池 线程池是一种多线程处理形式,处理过程中将任务添加到队列,然后在创建线程后自动启动这些任务. 为什么要用线程池 如果并发请求数量很多,但每个线程执行的时间很短,就会出现频繁的创建 ...

  9. java线程的理解

    java thread类都是native方法实现的,所以没有用平台无关的方法实现,怎么实现的呢? 线程的实现: 第一种:使用内核线程实现. 内核线程就是直接使用操作系统内核支持的线程,由内核完成切换. ...

随机推荐

  1. 获取.properties后缀的数据

    在MyPro.properties中的数据如下: Name=ABC 测试类中: Properties properties = new Properties(); String configFile ...

  2. python笔记18-高阶函数

    高阶函数: 如果一个函数的入参是一个函数名的话,那这个函数就是一个高阶函数 函数即变量 # def hello(name):# print(name)# new_hello = hello#hello ...

  3. Git 转载

    我每天使用 Git ,但是很多命令记不住. 一般来说,日常使用只要记住下图6个命令,就可以了.但是熟练使用,恐怕要记住60-100个命令. 下面是我整理的常用 Git 命令清单.几个专用名词的译名如下 ...

  4. 为什么使用zookeeper?

    随着应用规模的迅速扩张,单台机器的部署已经难以支撑用户大规模.高并发的请求了, 因此服务化.集群化.分布式概念应运而生. 针对这种场景,人们通常使用的做法就是将软件按照模块进行拆分,形成独立的子系统, ...

  5. selenium多窗口切换定位

    from selenium import webdriverimport unittest,time,refrom selenium.webdriver.common.keys import Keys ...

  6. Python第二章(北理国家精品课 嵩天等)

    一.深入理解Python语言 语法简洁 >13万第三方库 二.Python蟒蛇绘制 #PythonDraw.py import turtle turtle.setup(650,350,200,2 ...

  7. JVM逃逸分析

    开启逃逸分析: -server -XX:+DoEscapeAnalysis -XX:+PrintGCDetail -Xmx10m -Xms10m 关闭逃逸分析: -server -XX:-DoEsca ...

  8. leetcode 第4题 Median of Two Sorted Arrays

    class Solution { public: double findMedianSortedArrays(vector<int>& nums1, vector<int&g ...

  9. c++ 第二章知识梳理

    2.1.c++语言概括 2.1.1)c++的产生 一个更好的c,由c演变而来 2.1.2)c++的特点 一是尽量兼容c,二是支持面向对象的方法.更安全,且简洁高效. 2.1.3~2.1.5 多数和C相 ...

  10. jq常用

    1.文本框.密码框.隐藏域.文本域(id换成对应的,value属性存在,才能利用attr(‘value’) 获取值,否则返回undefined): 1.1 获取—>$(“#text”).val( ...