Java基础 自定义线程池



代码示例:
package pojo.xc01;
public class MyRunnable implements Runnable {
@Override
public void run() {
//编写线程锁执行的代码
for (int i = 1; i <= 3; i++) {
System.out.println(Thread.currentThread().getName() + "---" + i);
}
}
}
-------------------------------------------------------------------
public static void main(String[] args) throws Exception {
//自定义线程池
ThreadPoolExecutor pool = new ThreadPoolExecutor(
3,//核心线程数量,不能小于 0
6,//最大线程数量,不能小于0,并且大于等于 核心线程数量
60,//空闲线程最大存活时间,不能小于0
TimeUnit.SECONDS,//时间单位,用TimeUnit指定
new ArrayBlockingQueue<>(3),//阻塞队列
Executors.defaultThreadFactory(),//创建线程工厂
new ThreadPoolExecutor.AbortPolicy()//任务的拒绝策略
);
pool.submit(new MyRunnable());
}
线程池到底多大才合适呢?
如果你的项目当中 计算比较多,但读取本地文件或者读取数据库的操作比较少,就属于 CPU密集型项目
如果你的项目当中 读取本地文件或者读取数据库的操作比较多,就属于 I/O密集型项目
CPU密集型运算:最大并行数 + 1
I/O密集型运算:最大并行数 * 期望CPU利用率 * ((CPU计算时间 + 等待时间)/ CPU计算时间)
浙公网安备 33010602011771号