import java.io.BufferedWriter;import java.io.File;import java.io.FileWriter;import java.io.IOException;import java.util.Scanner;import java.util.concurrent.BlockingQueue;import java.util.concurrent.CountDownLatch;import java.util.concurrent.LinkedBlockingQueue;public class AsyncExecute {// (一),用CountDownLatch控制多线程的执行顺序// (二),多个线程同时工作时// (三),但有一个线程需要等其他线程结束后才能开始 public AsyncExecute(CountDownLatch cdl) { this.latch = cdl; queue = new LinkedBlockingQueue(); File file = new File(“F:xbl1.sql”); try{ bw = new BufferedWriter(new FileWriter(file)); } catch(Exception ex) { ex.printStackTrace(); } } // 控制资源释放 private CountDownLatch latch; // 阻塞队列 private BlockingQueue queue; private BufferedWriter bw; private boolean finshedHandle = false; // 线程能发现volatile变量最新值 private volatile boolean sendFinished = false; public void sendFinish() { sendFinished = true; } // 释放资源 public void release() { System.out.println(“release..”); if (bw != null) { try { bw.close(); } catch (IOException e) { } } if(queue != null) { queue.clear(); queue = null; } } // 往队列发送消息 public void sendMsg(String text) { queue.add(text); } public void handle() { // 模拟性能瓶颈每3秒 new Thread( new Runnable() { public void run() { while(!finshedHandle) { try { Thread.sleep(3000); } catch(Exception ex) {} // 队列中获取 String s = queue !=null? queue.peek():null; if(s != null) { // remove弹出 queue.poll(); try { bw.write(s); bw.newLine(); } catch(Exception ex) {} } // 队列为空 if(sendFinished) { /* CountDownLatch 是一个同步工具类, 用来协作多个线程间的同步,或起到线程间通信 (而不是互斥)。 (一),他是通过计数器来实现的, (二),计数器的初始值为线程的数量 * (三),每当一个线程完成任务后, (四),计数器的值就会减1。 * (五),当计数器的值为0时, (六),它表示所有线程已经完成任务 */ // 计数器1->0 latch.countDown(); finshedHandle = true; break; } } } } ).start(); } public static void main(String[] args)throws Exception { //(一),CountDownLatch这个类 //(二),可以使一个线程等待 //(三),其他线程完成任务后再执行 CountDownLatch latch = new CountDownLatch(1); AsyncExecute async = new AsyncExecute(latch); async.handle(); Scanner scanner = new Scanner(System.in); while(true) { String text = scanner.next(); if(text.equals(“exit”)) { async.sendFinish(); break; } async.sendMsg(text); } try { // 阻塞主线程,等待消息写入到本地文件完成 latch.wait(); } catch(Exception ex) {} async.release(); scanner.close(); } }
相关推荐
4nm工艺,性能更强更省电 高通推出第一代骁龙W5/W5+可穿戴平台
在过去的5年时间内,可穿戴设备迎来了蓬勃发展,除了专门的可穿戴设备品牌外,包括小米、vivo、OPPO等手机品牌也都纷纷打造了自己的可穿戴设备,现在智能手表被赋予了更多的功能,包括…
2022年7月20日0日本恢复入境旅行一个月,游客数量较同期下降95%
据CNN报道,日本在2022年6月大张旗鼓地恢复外国游客入境,正好赶上旅游旺季。但根据日本移民局的数据,6月10日至7月10日期间,日本迎来了约1500名游客,这比2019年同期下…
2022年8月12日0红米Note12 Pro:1.5K全面屏+6000mAh+天玑9000,1999锁定千元机皇
小米现在是一年两Note系列,11是体验为主,12自然就是性能为主。这次小米绝对是带着诚意来的。根据外媒的爆料图来看这次红米Note12 Pro的外观不逊色于外围体验感拉满的红米N…
2022年8月15日0cpu性能天梯图2022 AMD CPU天梯图最新排行榜出炉
用户在DIY自己的主机时选择CPU是非常关键的,CPU可以说是电脑的大脑,大家也都想追求好一点的CPU来使用,但型号太多了,大部分的用户都不知道目前哪一款CPU比较好用,快来看看详…
2022年11月24日0低预算购机用户的福音,这四款配置一步到位
本篇针对低预算人群,进行了机型的筛选,为大家盘点了目前在两千多元的价位区间,非常值得添置的四款机型。有需要的可以关注下。 一加Ace 一加Ace这款机型在性能及游戏方面非常突出,其…
2022年6月16日0品质、性能更进一步,极米H5专为家用观影而来
近年来,国内家用投影行业飞速发展,行业内的竞争也在不断升级。为了进一步抢占市场份额,不少品牌都在亮度上狠下功夫,而亮度也成为了如今许多品牌方的主要宣传卖点。只是,对于衡量亮度的标准…
2022年8月23日0比iPhone 14更过分,苹果新品被曝龟速升级,性能倒退
最近一段时间,有关iPhone 14几乎不升级的消息引起了很多网友热议,虽然猜测了很多原因,但依然不确定苹果为啥要这么做,虽然iPhone 14大概率没什么升级,但也不至于倒退,但…
2022年6月29日0化妆步骤的先后顺序图(新手化妆全部顺序步骤)
化妆是女人的必修课,也是变美路上最关键的一步。化妆如换脸,一点都不夸张。看了太多博主惊艳的化妆术,到了自己却总是显得妆容很脏。那么到底是哪里做错了呢?其实妆容很“显脏”,大概率是化…
2022年4月21日0全球首款高通骁龙 8cx Gen 3 笔记本电脑,联想 ThinkPad X13s 海外上市:Win11平台第一颗 5nm 芯片
本文转自:IT之家作者:问舟 在 MWC22 上,联想发布了首款搭载 Arm 处理器的 ThinkPad 笔记本,型号为 ThinkPad X13s Gen1,搭载了高通最新的骁龙…
2022年7月30日0性价比超高的4款256GB大内存手机,旗舰配置千元价格,可以放心入
性价比超高的4款256GB大内存手机,旗舰配置千元价格,可以放心入 第一款:OPPO K9s 1549起 OPPO K9S可以说是目前在售的最便宜的骁龙778G手机了,无论是日常使…
2022年9月20日0