Semaphore类是一个计数信号量,必须由获取它的线程释放,
通常用于限制可以访问某些资源(物理或逻辑的)线程数目。
一个信号量有且仅有3种操作,且它们全部是原子的:初始化、增加和减少
增加可以为一个进程解除阻塞;
减少可以让一个进程进入阻塞。
new Semaphore(permits,fair)
permits:int,初始化可用的许可数目。
fair: boolean,若该信号量保证在征用时按FIFO的顺序授予许可,则为true,否则为false;
semaphore.acquire();
从信号量获得许可,即可以进行下一步,否则阻塞。
semaphore.release();
已获得许可的线程释放许可;注意释放,否则可能导致信号量永远为零。