- 线程池的概念与Executors类的使用
(1)创建固定大小的线程池–当有多个任务时,会先按照线程池中的数据执行任务,其他任务处于等待过程中,等执行完这批任务后再执行下批任务。
(2)创建缓存线程池,会根据任务的多少来创建线程
(3)创建单一线程池(该线程死掉后,系统会自动创建另一个线程)
package cn.threadPool;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;
public class ThreadPoolTest {
/**
* 创建线程池
*/
public static void main(String[] args) {
ExecutorService threadPool=Executors.newCachedThreadPool();
for(int n=0;n<10;n++){
final int task=n;
threadPool.execute(new Runnable(){
@Override
public void run() {
for(int i=0;i<10;i++){
try {
Thread.sleep(20);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName()+" 循环到"+i+" ,loop "+task);
}
}
});
}
System.out.println("任务结束");
/**
* 用线程池启动定时任务
*
*/
Executors.newScheduledThreadPool(3).scheduleAtFixedRate(new Runnable(){
@Override
public void run() {
System.out.println("booming");
}
}, 2, 2, TimeUnit.SECONDS);
}
}