电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

Java并發編程線程間通訊實現過程詳解

瀏覽:3日期:2022-09-01 17:18:04

在Java中線程間通訊有多種方式,我這里列出一些常用方式,并用代碼的方式展示他們是如何實現的:

共享變量 wait, notify,notifyAll(這3個方法是Object對象中的方法,且必須與synchronized關鍵字結合使用) CyclicBarrier、CountDownLatch 利用LockSupport Lock/Condition機制 管道,創建管道輸出流PipedOutputStream和管道輸入流PipedInputStream

示例一:

package com.zhi.test;import java.util.concurrent.CountDownLatch;import java.util.concurrent.atomic.AtomicInteger;import org.junit.Test;/** * Java多線程-線程通訊示例<br> * flag作為共享變量JobB執行,notify通知Job執行,CountDownLatch通知主線程執行 * * @author 張遠志 * @since 2020年5月4日21:51:24 * */public class ThreadTest2 { private CountDownLatch latch; private volatile boolean flag = true; private Object lock = new Object(); private AtomicInteger num = new AtomicInteger(0); class JobA implements Runnable { @Override public void run() { synchronized (lock) {flag = false;if (num.get() != 3) { try { lock.wait(); // wait方法會釋放鎖 } catch (InterruptedException e) { }}System.out.println('任務A收到通知,繼續執行作業'); } latch.countDown(); } } class JobB implements Runnable { @Override public void run() { while (flag) { // 保證JobA先申請到鎖 } synchronized (lock) {for (int i = 1; i <= 5; i++) { try { Thread.sleep(1000); } catch (InterruptedException e) { } int a = num.incrementAndGet(); System.out.println('任務B第' + i + '次執行,num值為:' + a); if (a == 3) { lock.notify(); // 喚醒JobB線程,notify方法不會釋放鎖 }} } latch.countDown(); } } @Test public void test() { latch = new CountDownLatch(2); new Thread(new JobA()).start(); new Thread(new JobB()).start(); try { latch.await(); // 保證2個線程都執行完畢 } catch (InterruptedException e) { } }}

結果輸出:

任務B第1次執行,num值為:1任務B第2次執行,num值為:2任務B第3次執行,num值為:3任務B第4次執行,num值為:4任務B第5次執行,num值為:5任務A收到通知,繼續執行作業

示例二:

package com.zhi.test;import java.util.concurrent.CountDownLatch;import java.util.concurrent.locks.LockSupport;import org.junit.Test;/** * Java多線程-線程通訊示例,利用LockSupport * * @author 張遠志 * @since 2020年5月4日21:51:24 * */public class ThreadTest3 { private CountDownLatch latch; private volatile int num = 0; private Thread ta; private Thread tb; class JobA implements Runnable { @Override public void run() { if (num != 3) {LockSupport.park(); } System.out.println('任務A收到通知,繼續執行作業'); latch.countDown(); } } class JobB implements Runnable { @Override public void run() { for (int i = 1; i <= 5; i++) {try { Thread.sleep(1000);} catch (InterruptedException e) {}num++;System.out.println('任務B第' + i + '次執行,num值為:' + num);if (num == 3) { LockSupport.unpark(ta); // unpark會立即激活傳入線程} } latch.countDown(); } } @Test public void test() { latch = new CountDownLatch(2); ta = new Thread(new JobA()); tb = new Thread(new JobB()); ta.start(); tb.start(); try { latch.await(); // 保證2個線程都執行完畢 } catch (InterruptedException e) { } }}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: Java
相關文章:
主站蜘蛛池模板: 镀锌钢格栅_热镀锌格栅板_钢格栅板_热镀锌钢格板-安平县昊泽丝网制品有限公司 | 接地电阻测试仪[厂家直销]_电缆故障测试仪[精准定位]_耐压测试仪-武汉南电至诚电力设备 | 气动绞车,山东气动绞车,气动绞车厂家-烟台博海石油机械有限公司 气动隔膜泵厂家-温州永嘉定远泵阀有限公司 | 防腐木批发价格_深圳_惠州_东莞防腐木厂家_森源(深圳)防腐木有限公司 | 冷却塔改造厂家_不锈钢冷却塔_玻璃钢冷却塔改造维修-广东特菱节能空调设备有限公司 | 深圳市万色印象美业有限公司| 砂磨机_立式纳米砂磨机_实验室砂磨机-广州儒佳化工设备厂家 | 报警器_家用防盗报警器_烟雾报警器_燃气报警器_防盗报警系统厂家-深圳市刻锐智能科技有限公司 | 鲁尔圆锥接头多功能测试仪-留置针测试仪-上海威夏环保科技有限公司 | 空气能采暖,热泵烘干机,空气源热水机组|设备|厂家,东莞高温热泵_正旭新能源 | 混合生育酚_醋酸生育酚粉_琥珀酸生育酚-山东新元素生物科技 | 喷播机厂家_二手喷播机租赁_水泥浆洒布机-河南青山绿水机电设备有限公司 | 盘装氧量分析仪-防爆壁挂氧化锆分析仪-安徽吉帆仪表有限公司 | 电子天平-华志电子天平厂家 | 铝合金重力铸造_铝合金翻砂铸造_铝铸件厂家-东莞市铝得旺五金制品有限公司 | 压滤机-洗沙泥浆处理-压泥机-山东创新华一环境工程有限公司 | 知企服务-企业综合服务(ZiKeys.com)-品优低价、种类齐全、过程管理透明、速度快捷高效、放心服务,知企专家! | 厂房出售_厂房仓库出租_写字楼招租_土地出售-中苣招商网-中苣招商网 | TPU薄膜_TPU薄膜生产厂家_TPU热熔胶膜厂家定制_鑫亘环保科技(深圳)有限公司 | 复合肥,化肥厂,复合肥批发,化肥代理,复合肥品牌-红四方 | 主题班会网 - 安全教育主题班会,各类主题班会PPT模板 | 阻燃剂-氢氧化镁-氢氧化铝-沥青阻燃剂-合肥皖燃新材料 | 低气压试验箱_高低温低气压试验箱_低气压实验箱 |林频试验设备品牌 | 液压油缸-液压缸厂家价格,液压站系统-山东国立液压制造有限公司 液压油缸生产厂家-山东液压站-济南捷兴液压机电设备有限公司 | 400电话_400电话申请_866元/年_【400电话官方业务办理】-俏号网 3dmax渲染-效果图渲染-影视动画渲染-北京快渲科技有限公司 | 塑料熔指仪-塑料熔融指数仪-熔体流动速率试验机-广东宏拓仪器科技有限公司 | 防水套管|柔性防水套管|伸缩器|伸缩接头|传力接头-河南伟创管道 防水套管_柔性防水套管_刚性防水套管-巩义市润达管道设备制造有限公司 | 天津暖气片厂家_钢制散热器_天津铜铝复合暖气片_维尼罗散热器 | 注塑模具_塑料模具_塑胶模具_范仕达【官网】_东莞模具设计与制造加工厂家 | 新车测评网_网罗汽车评测资讯_汽车评测门户报道 | 电池挤压试验机-自行车喷淋-车辆碾压试验装置-深圳德迈盛测控设备有限公司 | 青岛成人高考_山东成考报名网 | 层流手术室净化装修-检验科ICU改造施工-华锐净化工程-特殊科室建设厂家 | 玻璃瓶厂家_酱菜瓶厂家_饮料瓶厂家_酒瓶厂家_玻璃杯厂家_徐州东明玻璃制品有限公司 | 液压油缸-液压站生产厂家-洛阳泰诺液压科技有限公司 | PE一体化污水处理设备_地埋式生活污水净化槽定制厂家-岩康塑业 | 精密五金加工厂-CNC数控车床加工_冲压件|蜗杆|螺杆加工「新锦泰」 | 企典软件一站式企业管理平台,可私有、本地化部署!在线CRM客户关系管理系统|移动办公OA管理系统|HR人事管理系统|人力 | 找培训机构_找学习课程_励普教育 | 防火门|抗爆门|超大门|医疗门|隔声门-上海加汇门业生产厂家 | SRRC认证_电磁兼容_EMC测试整改_FCC认证_SDOC认证-深圳市环测威检测技术有限公司 |