SynchronousQueue队列的使用
来源:互联网 发布:himall2.8官方版源码 编辑:程序博客网 时间:2024/06/09 15:08
一直知道java.util.concurrent.Executors#newCachedThreadPool()方法里面使用了SynchronousQueue队列,但是自己在项目中却找不到使用该队列的场景,今天看到这篇文章,于是意淫出一个使用场景:有一个线程数为1的线程池,每次只能并发执行一个任务,当同时有多个任务被提交到该线程池时,抛弃多余的任务,代码如下:
import java.util.concurrent.*;public class SyncQueueTester { private static ExecutorService executor = new ThreadPoolExecutor(1, 1, 1000, TimeUnit.SECONDS, new SynchronousQueue<Runnable>(), new ThreadPoolExecutor.DiscardPolicy()); private static void kickOffEntry(final int index) { executor.submit( new Callable<Void>() { public Void call() throws InterruptedException { System.out.println("start " + index); Thread.sleep(999); // pretend to do work System.out.println("stop " + index); return null; } } ); } public static void main(String[] args) throws InterruptedException { for (int i = 0; i < 20; i++) { kickOffEntry(i); Thread.sleep(200); } executor.shutdown(); }}
代码中使用了SynchronousQueue,其中DiscardPolicy表示抛弃后续来不及执行的任务。输出结果如下:
start 0stop 0start 5stop 5start 10stop 10start 15stop 15
阅读全文
0 0
- SynchronousQueue队列的使用
- SynchronousQueue的使用
- SynchronousQueue的使用
- 阻塞队列之SynchronousQueue
- SynchronousQueue(同步队列) 原理
- SynchronousQueue 同步队列
- 同步队列SynchronousQueue
- 多线程和并发中SynchronousQueue的使用
- Java-SynchronousQueue 阻塞队列小记
- Java多线程--并发中容器的使用之SynchronousQueue
- SynchronousQueue的简单应用
- SynchronousQueue
- SynchronousQueue
- SynchronousQueue
- SynchronousQueue
- SynchronousQueue
- SynchronousQueue
- SynchronousQueue
- 数据库锁
- 初学JAVA 笔记 7月14号 注释 标识符 关键字 数据类型 变量 运算符
- [leetcode]13. Roman to Integer(Java)
- QTableWidget的使用
- QProcess中的start和startDetached两种启动方式的区别
- SynchronousQueue队列的使用
- Android Studio使用jni环境配置
- 科技论文写作注意事项
- 笔试-面试算法题总结
- wbin笔记本商务版博通机型装(原版黑苹果)单MacOS流程记录(备忘)
- 论坛项目已经交了
- Pandas库入门
- 【面试】阿里校招 面试题、 【安卓方向】
- 十大经典排序算法的 JS