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