可能会有一种情况,当一个线程获取到对象的锁,然后在执行过程中因为一些原因(等待IO,调用sleep方法)被阻塞了,这个时候锁还在被阻塞的线程手中,而其他线程这个时候除了等之外,没有任何办法,我们想一想这样子会有多影响程序的效率。 synchronized是Java提供的关键字,使用起来非常方便,不过在有些情况下,它是具有很多局限...
所以到最后线程1读取到的就是stop最新的值。 volatile可以保证原子性吗 在之前我们了解到了线程的三大特性:原子性,可见性,有序性。 前面的例子我们知道了volatile可以保证共享变量的可见性,但是volatile可以保证原子性吗? 我们来看看: public class Test { public volatile int inc = 0; public void increase() {...