java线程池笔记

线程池的唯一好处:
线程池给开发者带来的唯一好处是允许多个线程按照组的模式进行程序的处理,这样在某一个业务逻辑复杂的环境下性能就会得到很好的提升

 

线程池:将多个线程封装在一起执行

从JDK1.5之后追加了一个并发访问的程序包:java.util.concurrent,对于此线程池操作的核心类和接口就定义在
此包当中,这里面有两个核心的接口:
1、普通的执行线程池定义:java.util.concurrent.ExecutorService
2、调度线程池(某些操作可以自动定时完成):java.util.concurrent.ScheduleExecutorService
如果要想进行线程池的创建,一般可以使用java.util.concurrent.Executors类完成
3、创建无大小限制的线程池:
4、创建固定大小的线程池
5、单线程池
6、创建定时调度池

二、创建各种线程池
1、创建无限大小的线程池
public class TestDemo {
public static void main(String[] args) throws Exception{
//现在创建了一个线程池的模型,但是里面现在没有线程
ExecutorService executorService = Executors.newCachedThreadPool();
for(int x = 0 ; x < 10 ; x++){
Thread.sleep(200);
int index = x;
executorService.submit(() -> {
System.out.println(Thread.currentThread.getName() + "、x=" + x);
});//执行线程的操作
}
executorService,shutdown();//关闭线程池
}
}
2、创建单线程池
public class TestDemo {
public static void main(String[] args) throws Exception{
//现在创建了一个线程池的模型,但是里面现在没有线程
ExecutorService executorService = Executors.newSingleThreadExecutor();
for(int x = 0 ; x < 10 ; x++){
int index = x;
executorService.submit(() -> {
System.out.println(Thread.currentThread.getName() + "、x=" + x);
});//执行线程的操作
}
executorService,shutdown();//关闭线程池
}
}
3、创建固定大小的线程池
public class TestDemo {
public static void main(String[] args) throws Exception{
//现在创建了一个线程池的模型,但是里面现在没有线程
ExecutorService executorService = Executors.newFixedThreadPool(3);
for(int x = 0 ; x < 10 ; x++){
int index = x;
executorService.submit(() -> {
System.out.println(Thread.currentThread.getName() + "、x=" + x);
});//执行线程的操作
}
executorService,shutdown();//关闭线程池
}
}
4、定时调度池
public class TestDemo {
public static void main(String[] args) throws Exception{
//创建一个具备有三个线程池大小的定时调度池
ScheduledExecutorService executorService = Executors.newScheduledThreadPool(3);
for(int x = 0 ; x < 10 ; x++){
Thread.sleep(3000);
int index = x;
executorService.scheduleAtFixedRate(new Runnable(){
@Override
Public void run(){
System.out.println(Thread.currentThread.getName() + "、x=" + index);
}
},3,2,TimeUnit.SECONDS);//使用的是一个秒的单位,表示3秒后开始执行,而后每2秒执行一次
}
executorService,shutdown();//关闭线程池
}
}

posted @ 2019-04-27 18:11  介寒食  阅读(224)  评论(0编辑  收藏  举报