对线程池的理解
一个池子中有多个线程,可以放入多个任务,任务被不确定的线程执行。
Executors
工具类
1、创建固定数目的线程池
2、缓存线程池:线程数是可伸缩的,任务多的时候,会创建新的线程来执行任务,任务完成后,空闲的线程会被回收。这样若请求过多,可能造成创建大量线程,造成服务器性能下降,甚至宕机。
3、单线程池:1个线程,这个线程死了,会有替补线程接替执行任务。
1、创建固定数目的线程池
2、缓存线程池:线程数是可伸缩的,任务多的时候,会创建新的线程来执行任务,任务完成后,空闲的线程会被回收。这样若请求过多,可能造成创建大量线程,造成服务器性能下降,甚至宕机。
3、单线程池:1个线程,这个线程死了,会有替补线程接替执行任务。
ExecutorService
线程池对象。
.execute(Runnable)执行任务
.shutdownNow()关闭线程池,销毁所有线程。
public void testThreadPool(){
// ExecutorService threadPool = Executors.newFixedThreadPool(3);
// ExecutorService threadPool = Executors.newCachedThreadPool();
ExecutorService threadPool = Executors.newSingleThreadExecutor();
threadPool.execute(new Runnable() {
@Override
public void run() {
System.out.println("task execute");
}
});
threadPool.shutdownNow();
}
ScheduledExecutorService
ScheduledExecutorService newScheduledThreadPool = Executors.newScheduledThreadPool(6);
newScheduledThreadPool.scheduleAtFixedRate(new Runnable() {
@Override
public void run() {
System.out.println("di da !");
}
},
6, // 程序启动以后,第一次任务多久以后执行
2, // 两次任务执行的时间间隔
TimeUnit.SECONDS);//单位
}