java 线程池 Executors原生三大方法
package com.chen.pool;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class Test1 {
public static void main(String[] args) {
// 平时我们创建一些类使用工具类操作 s
// 总数可以管理
// 线程池 Executors原生三大方法
ExecutorService threadpool1 = Executors.newFixedThreadPool(50); // 固定大小
// ExecutorService threadpool2 = Executors.newCachedThreadPool(); //可以弹性伸缩的线程池,遇强则强
//ExecutorService threadpool3 = Executors.newSingleThreadExecutor(); // 只有一个
try {
// 10个线程,会显示几个线程~
for (int i = 1; i <= 100; i++) {
// 线程池,执行线程
threadpool1.execute(()->{
System.out.println(Thread.currentThread().getName()+" running...");
});
}
} catch (Exception e) {
e.printStackTrace();
} finally {
// 线程池关闭
threadpool1.shutdown();
}
}
}
====================线程池ExecutorService =================================
public static void main(String[] args) {
// 代码级别的
System.out.println(Runtime.getRuntime().availableProcessors());
ExecutorService threadPool = new ThreadPoolExecutor(
2,
Runtime.getRuntime().availableProcessors(), // 线程池最大大小2
2L,
TimeUnit.SECONDS, // 超时回收空闲的线程,假设超过了指定的时间,这个最大的线程就不被
new LinkedBlockingDeque<>(3), // 根据业务设置队列大小,队列大小一定要设置
Executors.defaultThreadFactory(), // 不用变
new ThreadPoolExecutor.CallerRunsPolicy() //拒绝策略
);
// 拒绝策略说明:
// 1. AbortPolicy (默认的:队列满了,就丢弃任务抛出异常!)
// 2. CallerRunsPolicy(哪来的回哪去? 谁叫你来的,你就去哪里处理)
// 3. DiscardOldestPolicy (尝试将最早进入对立与的人任务删除,尝试加入队列)
// 4. DiscardPolicy (队列满了任务也会丢弃,不抛出异常)
try {
// 队列 RejectedExecutionException 拒绝策略
for (int i = 1; i <= 20; i++) {
// 默认在处理
threadPool.execute(()->{
System.out.println(Thread.currentThread().getName()+" running....");
});
}
} catch (Exception e) {
e.printStackTrace();
} finally {
threadPool.shutdown();
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
2021-06-03 RabbitMQ 使用总结
2013-06-03 ui,bll,dal