package com.jerry.concurrency;
import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
public class TestRejectedPolicy {
public static void main(String[] args) throws InterruptedException {
ThreadPoolExecutor pool = new ThreadPoolExecutor(1, 1, 0, TimeUnit.SECONDS,
new ArrayBlockingQueue<Runnable>(1));//设置线程池只启动一个线程 阻塞队列一个元素
pool.setRejectedExecutionHandler(new ThreadPoolExecutor.DiscardPolicy());
//设置策略为直接丢弃
for (int i = 0; i < 10; i++) {
pool.submit(new Runnable() {
public void run() {
System.out.println("线程:" + Thread.currentThread().getName()+" 开始执行");
try {
Thread.sleep(1000L);
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("线程:" + Thread.currentThread().getName()+" 执行完毕");
}
});
}
Thread.sleep(9000L);
pool.shutdown();
System.out.println("关闭后线程终止了吗?" + pool.isTerminated());
}
}
RejectedPolicy--DiscardPolicy
最新推荐文章于 2024-12-23 13:20:01 发布
本文通过一个Java示例程序展示了如何使用线程池及其拒绝策略。程序创建了一个固定大小的线程池,并配置了丢弃策略来处理超出线程池和任务队列容量的任务。该示例有助于理解线程池的工作原理及其在高并发场景下的应用。
939

被折叠的 条评论
为什么被折叠?



