前言
阅读本篇文章,你需要先理解以下知识:
- Java基础知识
- Thread多线程(点我跳转)
- 击鼓传花的玩法
你有没有和小伙伴们玩过击鼓传花
这个游戏?多个人同时只有“一朵花”的情况下,只有一个人最后会“中奖”。Semaphore
就像击鼓手一样控制着这朵“花”究竟“花落谁家”。
当然了,Semaphore
不只支持调度一朵花。
它在Java中常被用于线程的调度,当有多个线程访问同一个资源时,我们可以让线程尝试从Semaphore
获取一个许可证,如果该线程尝试访问的对象正在被其它线程占用,该线程将无法获取许可证,即循环等待重新获取。
Semaphore并不难理解,请不要被下面一大串代码所劝退,认真试验下去。
拷贝
等等! 在拷贝之前你要知道,下面的代码有3中测试模式,将test的值改为1/2/3会开启不同的代码段,它们的难度是不一样的。
好的。现在打开你的IDE,新建一个项目或类,将类命名为SemaphoreTest
,并将下面的代码替换到你的项目中:
… …查看全文