import java.util.*;
import java.util.concurrent.*;//并发包
public class TestThreadPool{
public static void main(String[] args)throws Exception{
//执行器服务(服务员) es = 通过工具类的静态方法获得一个服务员
ExecutorService es = Executors.newFixedThreadPool(2);//可重用的线程池
// Executors.newCachedThreadPool();//缓存机制的线程池 1分钟 60秒
// Executors.newSingleThreadExecutor();//单一实例的执行器
ThreadOne t1 = new ThreadOne();
es.submit(t1);//将线程任务提交给执行器服务 = 找端茶倒水的服务员要水喝
ThreadTwo t2 = new ThreadTwo();
es.submit(t2);
ThreadThree t3 = new ThreadThree();
Future<String> f = es.submit(t3);
//System.out.println(f.get());//导致当前线程阻塞直到得到返回值为止
//es.shutdown();//阻止当前排队的线程,不会影响已经提交(正在运行的)的线程
List<Runnable> list = es.shutdownNow();//阻止当前排队的线程,中断已经提交(正在运行的)的线程
}
}
class ThreadThree implements Callable<String>{
/*
call() 弥补了run()的两大不足:
1.run()被定义为void方法 所以没法返回结果
2.run()没有任何throws声明
*/
@Override
public String call(){
for(int i = 0;i<10;i++){
System.out.println("我是创建线程的第三种方式");
}
return "ETOAK VIVA";
}
}
class ThreadTwo implements Runnable{
@Override
public void run(){
for(int i = 0;i<10;i++){
System.out.println("我是创建线程的第二种方式");
}
}
}
class ThreadOne extends Thread{
@Override
public void run(){
for(int i = 0;i<10;i++){
System.out.println("我是创建线程的第一个方式");
}
}
}
Java 如何实现多线程
最新推荐文章于 2024-09-23 22:36:07 发布