synchronized的语义是互斥锁,就是在同一时刻,只有一个线程能获得执行代码的锁.但是现实生活中,有好多的场景,锁不止一把. 比如说,又到了十一假期,买票是重点,必须圈起来.在购票大厅里,有5个售票窗口,也就是说同一时刻可以服务5个人.要实现这种业务需求,用synchronized显然不合适. 查看Java并发工具,发现有一个Semaphore类,天生就是处理这种情况的. 先用Semaphore实现一个购票的小例子,来看看如何使用 package semaphore; import jav…