1.线程池的核心参数

2.Java之创建线程池的四种方式
package threadPool;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
/**
* @author tian
* @Package threadPool
* @date 2022/9/6 16:35
* @description 创建线程池的四种方式
* 1.使用newCachedThreadPool-可缓存线程池
* 2.newFixedThreadPool 指定工作线程数量的线程池
* 3.newSingleThreadPool 只创建唯一的工作线程来执行任务
* 4.newScheduledThreadPool 创建一个定长的线程池,而且支持定时
* 且周期性任务执行
*
*/
public class FourWaysToCreateThreadPool {
// * 1.使用newCachedThreadPool-可缓存线程池
public static ExecutorService cacheThreadPool = Executors.newCachedThreadPool();
// * 2.newFixedThreadPool 指定工作线程数量的线程池
public static ExecutorService fixedThreadPool = Executors.newFixedThreadPool(3);
// * 3.newSingleThreadPool 只创建唯一的工作线程来执行任务
public static ExecutorService singleThreadPool = Executors.newSingleThreadExecutor();
// * 4.newScheduledThreadPool 创建一个定长的线程池,而且支持定时
public static ScheduledExecutorService scheduledThreadPool = Executors.newScheduledThreadPool(5);
public static void main(String[] args) {
System.out.println("创建线程的四种方式如下");
createNewCachedThreadPool();
createNewFixedThreadPool();
createNewSingleThreadPool();
createNewScheduledThreadPool();
}
/**
* 1.使用newCachedThreadPool-可缓存线程池
*/
public static void createNewCachedThreadPool(){
System.out.println("1.使用newCachedThreadPool-可缓存线程池");
for (int i = 0; i < 10; i++) {
final int index = i;
try {
Thread.sleep(index * 1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
//创建线程并执行
cacheThreadPool.execute(new Runnable() {
@Override
public void run() {
System.out.println(index);
}
});
}
}
/**
* 2.newFixedThreadPool 指定工作线程数量的线程池
*/
public static void createNewFixedThreadPool(){
System.out.println("2.newFixedThreadPool 指定工作线程数量的线程池");
for (int i = 0; i < 10; i++) {
final int index = i;
try {
Thread.sleep(index * 1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
//创建线程并执行
fixedThreadPool.execute(new Runnable() {
@Override
public void run() {
System.out.println(index);
try {
Thread.sleep(50000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
});
}
}
/**
* 3.newSingleThreadPool 只创建唯一的工作线程来执行任务
*/
public static void createNewSingleThreadPool(){
System.out.println("3.newSingleThreadPool 只创建唯一的工作线程来执行任务");
for (int i = 0; i < 10; i++) {
final int index = i;
try {
Thread.sleep(index * 1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
//创建线程并执行
singleThreadPool.execute(new Runnable() {
@Override
public void run() {
System.out.println(index);
}
});
}
}
/**
* 4.newScheduledThreadPool 创建一个定长的线程池,而且支持定时
* 且周期性任务执行
*
*/
public static void createNewScheduledThreadPool(){
System.out.println("4.newScheduledThreadPool 创建一个定长的线程池,而且支持定时");
scheduledThreadPool.scheduleAtFixedRate(()->{
System.out.println("index");
},1,3, TimeUnit.SECONDS);
}
}
版权声明:本文为Tian208原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。