J.U.C系列(三)Semaphore的使用
生活随笔
收集整理的這篇文章主要介紹了
J.U.C系列(三)Semaphore的使用
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
Semaphore類似于操作系統(tǒng)中的信號量,可以控制值對互斥資源的訪問線程數(shù)。
舉個例子:比如一共3把傘,9個人來借傘,傘借出去了就不能借給其他人,直到有人還傘。參考以下小demo理解以下。
打印結(jié)果如下:
[pool-1-thread-3 2020-05-10 16:14:31.563]借傘成功,當(dāng)前可接傘剩余:0 把 [pool-1-thread-2 2020-05-10 16:14:31.564]借傘成功,當(dāng)前可接傘剩余:1 把 [pool-1-thread-1 2020-05-10 16:14:31.563]借傘成功,當(dāng)前可接傘剩余:2 把 [pool-1-thread-2 2020-05-10 16:14:31.566]借用時長為:1 天 [pool-1-thread-3 2020-05-10 16:14:31.566]借用時長為:4 天 [pool-1-thread-1 2020-05-10 16:14:31.566]借用時長為:6 天 [pool-1-thread-4 2020-05-10 16:14:31.567]借傘成功,當(dāng)前可接傘剩余:0 把 [pool-1-thread-2 2020-05-10 16:14:31.567]還傘成功,當(dāng)前可接傘剩余:1 把 [pool-1-thread-4 2020-05-10 16:14:31.567]借用時長為:9 天 [pool-1-thread-5 2020-05-10 16:14:31.570]借傘成功,當(dāng)前可接傘剩余:0 把 [pool-1-thread-3 2020-05-10 16:14:31.570]還傘成功,當(dāng)前可接傘剩余:1 把 [pool-1-thread-5 2020-05-10 16:14:31.570]借用時長為:0 天 [pool-1-thread-5 2020-05-10 16:14:31.571]還傘成功,當(dāng)前可接傘剩余:1 把 [pool-1-thread-6 2020-05-10 16:14:31.571]借傘成功,當(dāng)前可接傘剩余:0 把 [pool-1-thread-6 2020-05-10 16:14:31.571]借用時長為:0 天 [pool-1-thread-6 2020-05-10 16:14:31.572]還傘成功,當(dāng)前可接傘剩余:1 把 [pool-1-thread-7 2020-05-10 16:14:31.572]借傘成功,當(dāng)前可接傘剩余:0 把 [pool-1-thread-1 2020-05-10 16:14:31.572]還傘成功,當(dāng)前可接傘剩余:1 把 [pool-1-thread-8 2020-05-10 16:14:31.572]借傘成功,當(dāng)前可接傘剩余:0 把 [pool-1-thread-7 2020-05-10 16:14:31.572]借用時長為:8 天 [pool-1-thread-8 2020-05-10 16:14:31.573]借用時長為:8 天 [pool-1-thread-4 2020-05-10 16:14:31.576]還傘成功,當(dāng)前可接傘剩余:1 把 [pool-1-thread-9 2020-05-10 16:14:31.576]借傘成功,當(dāng)前可接傘剩余:0 把 [pool-1-thread-9 2020-05-10 16:14:31.577]借用時長為:9 天 [pool-1-thread-8 2020-05-10 16:14:31.581]還傘成功,當(dāng)前可接傘剩余:2 把 [pool-1-thread-7 2020-05-10 16:14:31.581]還傘成功,當(dāng)前可接傘剩余:2 把 [pool-1-thread-9 2020-05-10 16:14:31.587]還傘成功,當(dāng)前可接傘剩余:3 把可以從日志中看出,當(dāng)有傘的時候才可以借,也就是說誰還了傘,下一個人才可以借用,這就是信號量,主要控制互斥資源的訪問。
總結(jié)
以上是生活随笔為你收集整理的J.U.C系列(三)Semaphore的使用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: BigDecimal的使用说明
- 下一篇: Commit failed with e