在java线程池中,线程的目标对象可以共享线程池中的线程对象
ExecutorService有3中实现方式
1、ExecutorService executorService=Executors.newSimpleTread();
创建单一线程,如果多次执行的话,这个线程会一直循环执行下去
2\ExecutorService executorService=Executors.newFixedTreadPool(10);
创建固定线程数,虚拟机在初始化10个线程数
3\ExecutorService executorService=Executors.newScheduleTreadPool(10);
缓存线程数,在程序开启时,虚拟机会创建10个线程,随着系统的需求会增加线程,线程的上限为系统资源的上限
shutdown 方法将执行平缓的关闭过程:不在接受新的任务,同时等待已经提交的任务执行完成---包括那些还未开始执行的任务。
shutdownNow 方法将执行粗暴的关闭过程:他将尝试取消所有运行中的任务,并且不再启动队列中尚未开始执行的任务。
isShutdown 判断之前是否调用过shutdown
isTerminated 判断所有提交的任务是否完成(保证之前调用过shutdown方法)
awaitTermination 调用shutdown方法后,等待所有任务执行完成
例子
public class TestThread implements Runnable{
@Override
public void run() {
}
}
}
public class test{
public static void main(String[] arges){
ExecutorService executorService=Executors.newScheduleTreadPool(10);//创建缓存线程池
for (int i = 0; i <100 ; i++) {
executorService.execute(new TestThread()));
}
executorService.shutdown();//关闭线程池
· while(!executorService.isTerminated()) {}
}
}