synchronized 有什么不⾜之处? 如果临界区是只读操作,其实可以多线程⼀起执⾏,但使⽤synchronized的话,同⼀时间只能有⼀个线程执⾏。synchronized⽆法知道线程有没有成功获取到锁使⽤synchronized,如果临界区因为IO或者sleep⽅法等原因阻塞了,⽽当前线程⼜没有释放锁,就会导致所有线程等待。 ⽽这些都是locks包下的锁可以解决的。