当前位置: 首页 > news >正文

国家城乡建设部网站导航网页

国家城乡建设部网站,导航网页,网站开发 外包空心,网站制作计划在多线程编程中#xff0c;其实就是分工、协作、互斥。在很多场景中#xff0c;比如A执行的过程中需要同步等待另外一个线程处理的结果#xff0c;这种方式下#xff0c;就是一种等待唤醒的机制。本篇我们来讲述等待唤醒机制的三种实现#xff0c;以及对应的应用场景。 G…在多线程编程中其实就是分工、协作、互斥。在很多场景中比如A执行的过程中需要同步等待另外一个线程处理的结果这种方式下就是一种等待唤醒的机制。本篇我们来讲述等待唤醒机制的三种实现以及对应的应用场景。 Guarded Suspension 模式 Guarded Suspension 翻译过来就是保护性暂停。其实就是一个线程需要等待获取另外一个线程执行的结果先把当前线程挂起另外一个线程执行完毕之后通知自己结束阻塞状态继续执行。 等待唤醒的规范实现如下 sychronizedwait/notify/notifyAllreentrantLockCondition(await/singal/singalAll)caspark/unpark 其实底层以来的是pthreadpthread_mutex_lock/unlock pthread_cond_wait/singal。这里就不介绍了感兴趣的朋友可以自行查阅。 解决线程之间的协作不可避免会用到阻塞唤醒机制 实际编码 syn package com.jia.suspension;import java.util.Objects; import java.util.concurrent.TimeUnit;/*** author qxlx* date 2023/12/30 3:13 PM*/ public class SynTest {private Object obj;public Object read() {synchronized (this) {while (Objects.isNull(obj)) {try {System.out.println(Thread.currentThread().getName() wait-before);this.wait();System.out.println(Thread.currentThread().getName() wait-after);} catch (InterruptedException e) {e.printStackTrace();}}return obj;}}public void write() {System.out.println(Thread.currentThread().getName() write);synchronized (this) {obj new Object();System.out.println(Thread.currentThread().getName() notifyAll-before);this.notifyAll();System.out.println(Thread.currentThread().getName() notifyAll-after);}}public static void main(String[] args) throws InterruptedException {SynTest synTest new SynTest();new Thread(()- {synTest.read();}).start();new Thread(()- {synTest.write();}).start();TimeUnit.SECONDS.sleep(2);}} 切记 不能在main线程中启动需要单独创建两个线程去执行否则main线程阻塞的话程序就会阻塞不会执行下去。 conditon package com.jia.suspension;import java.util.concurrent.TimeUnit; import java.util.concurrent.locks.Condition; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock;/*** author qxlx* date 2023/12/30 3:31 PM*/ public class ConditionTest {private final Lock lock new ReentrantLock();private final Condition condition lock.newCondition();private Object obj;public Object read () {try {lock.lock();while (obj null) {System.out.println(getLock);condition.await();}} catch (Exception e) {e.printStackTrace();} finally {lock.unlock();}return obj;}public void write() {try {lock.lock();obj new Object();condition.signalAll();System.out.println(唤醒);} catch (Exception e) {e.printStackTrace();} finally {lock.unlock();}}public static void main(String[] args) throws InterruptedException {ConditionTest test new ConditionTest();new Thread(()- {test.read();}).start();new Thread(()- {test.write();}).start();TimeUnit.SECONDS.sleep(1);}} LockSouport package com.jia.suspension;import java.util.concurrent.locks.LockSupport;/*** author qxlx* date 2023/12/30 3:38 PM*/ public class LockSupportTest {private Object obj;public Object read() {while (obj null) {System.out.println(read-线程等待);LockSupport.park();System.out.println(read-线程唤醒);}return obj;}public void write(Thread thread) {obj new Object();LockSupport.unpark(thread);System.out.println(唤醒线程);}public static void main(String[] args) {LockSupportTest lockSupportTest new LockSupportTest();Thread thread new Thread(() - {lockSupportTest.read();});thread.start();Thread thread2 new Thread(() - {lockSupportTest.write(thread);});thread2.start();}} 好了以上就是三种唤醒阻塞的方式。 应用场景 多线程环境下多个线程访问相同实例资源从实例资源中获得资源并处理;实例资源需要管理自身拥有的资源并对请求线程的请求作出允许与否的判断 在实际的开发中我们对外提供一个API数据查询的接口但是需要以来下游系统进行组合数据将结果写入MQ下游服务处理完毕后然后另外一个线程进行获取数据处理。 从图中可以看从处理web请求的是蓝色的线程而从Topic获取数据的线程是红色线程也就是蓝色线程异步写入Topic数据后会阻塞等待红色线程获取结果后然后在返回结果。
http://www.hkea.cn/news/14311190/

相关文章:

  • 高校校园网站建设培训班个人主页写什么内容
  • 辽宁工程建设工程信息网站健身房网站的建设情况
  • 建站行业消失了吗大连的网页设计公司
  • 做ppt很有创意的网站网站编辑做多久可以升职
  • 成都维尼网络 网站建设天津 网站设计
  • 江苏天宇建设集团官方网站先进的网站开发技术
  • 自适应自助建站网站htm5网站建设
  • 建设网站需要客户提供什么资料电商网站建设考试题
  • 郑州做网站推广的公司杭州专业的网站制作公司
  • php网站开发技术题目中国营销协会官网
  • 微网站建设目的联合实验室 网站建设方案
  • 产品推广网站哪个好wordpress显示称谓
  • 无忧网站建设哪家便宜网络营销师怎么报名
  • 给菠菜网站做外包wordpress在线浏览pdf
  • 营销型网站建设页面wordpress 禁止删除分类
  • 百度网站官方认证怎么做外贸服装商城网站建设
  • 做艺术品拍卖的网站重庆网站建设制作设计公司哪家好
  • 有域名了如何做网站虚拟主机免费领取
  • 做网站带来好处精品网站建设公
  • 大连学网站制作国家企业信用信息公示系统官网app
  • 姑苏网站制作网站导航菜单兰
  • 营销型网站 开源程序宁波seo教程app推广
  • 连云港市网站设计在线做网页的网站
  • 怎样只做自己的网站wordpress菜单分页
  • 一级a做爰片365网站网站空间如何使用
  • 网站首页怎么做全屏swf电商培训
  • 网站如何做营销开发项目管理软件
  • 建站程序免费网站百度收录
  • 大朗镇仿做网站网站的优化 设计
  • 购物网站开发教学视频wordpress 多站点错误