线程异步通信

所谓的异步,就是如下场景:

       线程T1对线程T2说:T2,你吃饭了吗?      T1问完问题后,就去干别的事情去了,并不需要一直苦苦等待T2的回答。但是为了最终T1可以接受到T2的回答内容,我们可以引出一个委托方来处理。具体处理过程:在进行通信之前,我们先创建一个缓冲队列,该缓冲队列专门用来存放T2给T1的答复内容。此时,委托方就起作用了,系统让该委托方一直对缓冲队列进行监控,当发现缓冲队列中有了内容,便通知线程T1,此时T1放下手头的工作,将缓冲队列中的内容取出。

      例如,在Java中:当用户点击了某个浏览所有数据的按钮后,此时我们就需要启动一个子线程,让该子线程专门去连接数据库,从数据中取到符合的数据,只要取到一条,就给之前定义好的缓冲队列中发送一条数据。然后,主线程就可以从队列中逐条取出数据,显示给用户,而如果因为一些原因(网络延迟等等)导致子线程在一时半会儿没能从数据库中取出数据,则主线程可以去干别的事情,没有必要等到查出所有的数据方才转去干别的事。

      假设,定义cache_queue为缓冲队列,message为要发送/接受的消息数据。

      Send(cache_queue, message)   :发送一个消息到缓冲队列

      Receive(cache_queue, message)   :从缓冲队列中取出一个消息

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值