當前位置:編程學習大全網 - 圖片素材 - ***享鎖Semaphore、CyclicBarrier、CountDownLatch

***享鎖Semaphore、CyclicBarrier、CountDownLatch

依據同步器的***享計數器模式,先設置計數器為5,線程調用acquire方法申請許可數量,申請成功計數器-n個許可數,失敗則阻塞等待。

當用完鎖後要調用release方法去釋放許可數,計數器會+n。

做限流,設置最大並發線程數,每個請求過來可用線程數-1,線程執行完畢可用線程數+1。

依據同步器的***享模式,先設置計數器為5,線程每次調用await方法,都會將計數器-1,再進入線程阻塞狀態,當計數器為0的時候,廣播喚醒所有阻塞的線程。

如果有壹個阻塞的線程被中斷,也會喚醒所有阻塞線程。

可以使用帶超時的await(time, TimeUnit)方法,會通過LockSupport.parkNanos先暫停壹段時間,當到達超時時間,線程醒來後,中斷其他阻塞線程,並在當前線程拋出TimeoutException異常。

也可以使用reset()方法,重置條件,中斷所有阻塞的線程。

需要等待所有條件都滿足, 大家 才能繼續往下執行。例如足球比賽,需要每個分組都比完,才能進入下壹輪。

依據同步器的***享模式,先設置計數器為5,然後每次調用countDown方法來進行計數器-1,等到計數器為0時,就喚醒被阻塞的線程,即調用了await方法的線程。

需要等待所有條件都滿足, 才能往下執行。幼兒園老師要等到小朋友都回家了,他才能回去,而小朋友管自己走就行。

CyclicBarrier與CountDownLatch雖然都是計數器,都會產生阻塞,但是阻塞的對象不同。CyclicBarrier是大家要等壹起等,CountDownLatch是我等妳們先走。另壹個區別是CyclicBarrier可以重置計數器。

  • 上一篇:深圳二奶村的少婦經常勾引我,我該怎麽好?
  • 下一篇:q版動漫可愛閨蜜頭像圖片(2)
  • copyright 2024編程學習大全網