import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;
/**
* 线程池:Executors类的应用
* 创建固定大小的线程池
* 创建缓存线程池
* 创建单一线程池
* 关闭线程池
* shutdown()与shutdownNow()
*/
public class TreadPool {
/**
* @param args
*/
public static void main(String[] args) {
//创建一个固定大小的线程池
//ExecutorService threadPool = Executors.newFixedThreadPool(3);
//创建一个缓存线程池,根据任务的多少自动改变线程的多少。
//ExecutorService threadPool = Executors.newCachedThreadPool();
//创建一个单一的线程池,每次只有一个线程但是线程死后,会创建一个新的线程。
ExecutorService threadPool = Executors.newSingleThreadExecutor();
for(int y=0; y<10; y++){
final int kk = y;
threadPool.execute(new Runnable(){
@Override
public void run() {
for(int x=0; x<5; x++){
System.out.println(Thread.currentThread().getId() + "loop" + x + "lop" + kk );
}
}
});
}
threadPool.shutdown();
//创建一个延迟执行的线程池
Executors.newScheduledThreadPool(3).schedule(new Runnable(){
@Override
public void run() {
for(int x=1; x<=5; x++){
System.out.println(Thread.currentThread().getName()+ "loop of" + x );
}
}
}, 3, TimeUnit.SECONDS);
//创建一个按照一定频率循环执行的线程池
Executors.newScheduledThreadPool(3).scheduleAtFixedRate(
new Runnable(){
@Override
public void run() {
// TODO Auto-generated method stub
System.out.println("爆炸....." );
}
},
0, //延迟10秒执行run()
3, //之后每隔3秒执行一次run()
TimeUnit.SECONDS
);
Executors.newScheduledThreadPool(3).scheduleWithFixedDelay(
new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
System.out.println("爆炸");
}
},
0,
3,
TimeUnit.SECONDS
);
}
}
黑马程序员:线程池
最新推荐文章于 2023-11-08 09:16:02 发布