BlockingQueue队列实现线程池
来源:互联网 发布:三网通游戏源码 编辑:程序博客网 时间:2024/06/08 00:23
1)BlockingQueue队列实现线程池
应用场景1:系统需要开启多线程接收日志文件,有时开启线程数过大占用内存,因此启用线程池处理接收日志。
/** * @ 接收日志文件,启用线程池 * @author lim * @date 2017-04-01 */public class ReapFileThreadPool { private static ThreadPoolExecutor executor = new ThreadPoolExecutor(10, 15, 100, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<Runnable>()); public static void execute(Runnable myThread){ executor.execute(myThread); }}
2)BlockingQueue实现消息队列
应用场景2:应用BlockingQueue队列实现后台数据处理进程展示,前台定时读取队列信息。
public class BlockingQueueLog { final static int FILE_QUEUE_SIZE = 50;// 阻塞队列大小 final static BlockingQueue<String> queue = new ArrayBlockingQueue<String>( FILE_QUEUE_SIZE); public static boolean offString(String msg){ return queue.offer(msg); } public static List<Object> pollString(){ List<Object> rlist = new ArrayList<Object>(); while(true){ Object msg = queue.poll(); if(msg == null) break; rlist.add(msg); } return rlist; } public static void clearString(){ queue.clear(); }}
注:ArrayBlockingQueue和LinkedBlockingQueue区别
ArrayBlockingQueue实现的队列,生产者和消费锁没有分离。(适合应用场景2
LinkedBlockingQueue实现的队列,生产者和消费者的锁是分离的,所以能提高队列的并发性能。(适合应用场景1
1 0
- BlockingQueue队列实现线程池
- 线程池ThreadPoolExecutor与阻塞队列BlockingQueue
- JAVA线程队列BlockingQueue
- Java使用阻塞队列BlockingQueue实现线程同步
- 用阻塞队列(BlockingQueue)实现读写(生产者消费者)线程
- java实现BlockingQueue队列
- Java线程:阻塞队列BlockingQueue
- [java线程]---BlockingQueue队列使用
- JAVA线程池ThreadPoolExecutor与阻塞队列BlockingQueue
- JAVA线程池ThreadPoolExecutor与阻塞队列BlockingQueue
- JAVA线程池ThreadPoolExecutor与阻塞队列BlockingQueue
- JAVA线程池ThreadPoolExecutor与阻塞队列BlockingQueue
- [转]JAVA线程池ThreadPoolExecutor与阻塞队列BlockingQueue
- JAVA线程池ThreadPoolExecutor与阻塞队列BlockingQueue
- JAVA线程池ThreadPoolExecutor与阻塞队列BlockingQueue
- JAVA线程池ThreadPoolExecutor与阻塞队列BlockingQueue .
- JAVA线程池ThreadPoolExecutor与阻塞队列BlockingQueue
- JAVA线程池ThreadPoolExecutor与阻塞队列BlockingQueue
- 防止头文件中重复定义的小方法
- java基础---->Base64算法的使用
- 深入理解SELinux/SEAndroid(第一部分)
- Centos7 install KVM
- Scala函数式编程课后习题答案(第三章)(更新ing)
- BlockingQueue队列实现线程池
- 第八届蓝桥杯 C/C++ C组第9题 拉马车
- Unity获取安卓手机运营商信息
- 今天入职新公司。
- CentOS 中 YUM 安装桌面环境
- django 使用 PIL 压缩图片
- MySQL数据的主从复制、半同步复制和主主复制详解
- 欢迎使用CSDN-markdown编辑器
- Unity3d插件PlayMaker经验