Java7新特性(四)并发 6 TransferQueue对象
来源:互联网 发布:qq群淘宝互刷是真的吗 编辑:程序博客网 时间:2024/06/03 01:14
本文主要根据《Java程序员修炼之道》整理的代码笔记片段
TransferQueue对象 如果接收线程处于等待状态,transfer()马上把工作项传给它,否则就会阻塞直到取走工作项 [高效]
即正在处理的工作项的线程在交付当前工作之前(被取走之前),不开始其他工作项的处理。
public abstract class MicroBlogThread extends Thread { protected final TransferQueue<Update> updates; protected String text = ""; protected final int pauseTime; private boolean shutdown = false; public MicroBlogThread(TransferQueue<Update> lbq_, int pause_) { updates = lbq_; pauseTime = pause_; } public synchronized void shutdown() { shutdown = true; } @Override public void run() { while (!shutdown) { doAction(); try { Thread.sleep(pauseTime); } catch (InterruptedException e) { shutdown = true; } } } public abstract void doAction();}
public class MicroBlogThreadMain { public static void main(String[] a) { final Update.Builder ub = new Update.Builder(); final TransferQueue<Update> lbq = new LinkedTransferQueue<>(); //如果接收线程处于等待状态,transfer()马上把工作项传给它,否则就会阻塞直到取走工作项 [高效] MicroBlogThread t1 = new MicroBlogThread(lbq, 10) { public void doAction() { text = text + "X"; Update u = ub.author(new Author("Tallulah")).updateText(text).build(); boolean handed = false; try { handed = updates.offer(u, 100, TimeUnit.MILLISECONDS); } catch (InterruptedException e) { } if (!handed) System.out .println("Unable to handoff Update to Queue due to timeout"); } }; MicroBlogThread t2 = new MicroBlogThread(lbq, 1000) { public void doAction() { @SuppressWarnings("unused")Update u = null; try { u = updates.take(); } catch (InterruptedException e) { return; } } }; t1.start(); t2.start(); }}
如果采用LinkedBlockingQueue 必须设置大小,不然相连线程池塞入过快,会内存溢出
- Java7新特性(四)并发 6 TransferQueue对象
- Java7新特性(四)并发 3 CountDownLatch计数器对象
- Java7新特性(四)并发 4 Atomic、ConcurrentHashMap对象
- Java7新特性(四)并发 5 CopyOnWriteArrayList对象
- Java7新特性(四)并发 1 不可变对象及构造器
- Java7新特性(四)并发 2 Lock对象处理死锁
- Java7新特性(四)并发 7 ScheduledThreadPool
- Java7新特性(四)并发 8 forkjoin分支合并框架
- java7新特性(转载)
- java7新特性——使用ThreadLocalRandom产生并发随机数
- java7新特性——使用ThreadLocalRandom产生并发随机数
- java7新特性——使用ThreadLocalRandom产生并发随机数
- Java7新特性(一)Coin
- Java7新特性(二)IO
- Java7新特性(三)DI
- Java7新特性(二)IO
- java7.的新特性!
- Java7新特性
- iOS获取设备剩余存储空间代码片段
- @interface UIImage (Retina4)
- RTSP服务器(一)
- linux驱动-i2c驱动架构-留存
- 社交软件强势来袭,谁来革新中国企业管理模式?
- Java7新特性(四)并发 6 TransferQueue对象
- linux命令,connect超时如何实现
- DOs历史
- 《C++ Primer》作者Stanley B.Lippman谈C++语言和软件产业的发展
- 停止线程
- 软件工程之概述
- 黑马程序员:交通灯管理系统
- MPEG2_TS(一)-结构-复用器
- PHP数组实际占用内存大小的分析