一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - java 同步器SynchronousQueue詳解及實例

java 同步器SynchronousQueue詳解及實例

2020-10-22 17:35xpbob Java教程

這篇文章主要介紹了java 同步器SynchronousQueue詳解及實例的相關資料,需要的朋友可以參考下

同步器簡介

       學習以來對線程的操作有很大的改觀,從c/c++的mutex到java的各種鎖(當然不是嫌麻煩,java讀寫鎖的實現還是帶來不少好處的,但是sokcet的設計我就不敢恭維了,tcp和udp是兩個類,弄得我現在對udp也不怎么熟悉)。其中最讓我感到特別剛需的設計就是同步器,除了countdownlatch,剩下的都比較剛需,cyclicbarrier我現在唯一能感覺他的好用處就是循環打印a,b,exchanger和SynchronousQueue我一直沒發現什么作用,兩個就適合生產者消費者問題。以上就是四大同步器,聽說過2個以上的就很厲害了,有些場合太難想了。

場景思路

      這次說最后兩個用的場景吧,我要做的事情呢,是采集一堆數據,然后采集另外的數據綜合處理,但是兩個數據是和時間相關的,如果順序執行的話,那么處理結果的可信度越低,最初的設想就是利用異步處理,兩個數據采集同時進行,然后一起處理,futuretask,就作為首選,我的采集信息還是周期性的任務,必需要用定時的線程池了,但是這種線程池(別說timer,這個類更建議用線程池替換)并沒有為異步處理做返回值,我也沒辦法直接獲取處理的數據了,無奈的情況下只能用線程來做了,同時也必須要用同步器來同步了,用手動阻塞線程然后喚醒這個行為實在是太不可取了,你全喚醒了,可能造成不該運行的代碼開始運行,喚醒單個,還得看cpu的調度,于是想到了exchanger和SynchronousQueue,我最終選取了SynchronousQueue。

SynchronousQueue

        其實就是特殊的阻塞隊列,特殊就特殊在他最多放一個元素,而且這個元素不在特定的時間消費掉就沒了,而且永遠長度都是0,具體看api就發現能用的方法沒幾個,3個是放入,2個是取走。

demo

生產者,消息最多存放1分鐘

?
1
2
3
4
5
6
7
8
9
public void run() {
  try {
  queue.offer(i++,1,TimeUnit.MINUTES);
  } catch (InterruptedException e) {
  e.printStackTrace();
  }
  System.out.println("add");
 
 }

消費者

?
1
System.out.println(queue.poll(1,TimeUnit.SECONDS));

用了這個同步器,這種定時生產者消費者問題,代碼量就很少,不需要自己再寫同步的代碼了。也避免了最初喚醒阻塞帶來的不可預估性。

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

原文鏈接:https://my.oschina.net/xpbob/blog/625314

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 亚飞与亚基国语1080p在线观看 | bl双性受乖调教改造身体 | 9999热视频 | 国产好痛疼轻点好爽的视频 | 99久久久久国产精品免费 | 美女69xx | 国产精品一级香蕉一区 | 为什么丈夫插我我却喜欢被打着插 | 调教女秘书 | 国产精品永久免费视频 | 国产偷啪 | 爽好大快深点一视频 | 日本无翼乌漫画 | xxx88视频在线观看 | 国产黄频 | 久久精品麻豆国产天美传媒果冻 | 国产三级精品三级男人的天堂 | 2014天堂 | 1024香蕉视频 | 农村妇女野战bbxxx农村妇女 | 2021国产精品视频一区 | 国产v日韩v欧美v精品专区 | 欧美猛男同志同性video | 九九影院午夜理论片无码 | 国产成人精品免费视频大全五级 | 日本激情网| 免费观看在线观看 | 俄罗斯一级大片 | 国产hd老太婆 | 国产欧美一区二区成人影院 | 欧美又硬又粗又长又大 | 91综合在线视频 | 荡女人人爱全文免费阅读 | 97爱干| 国产自拍偷拍自拍 | 性的张力 | 欧美xingai | 日本黄a三级三级三级 | www91在线观看 | 波多野结衣在线中文 | 日韩一区在线观看 |