为什么使用synchronize关键字:
存在共享数据,且此数据涉及多线程操作。(如经典的多窗口卖票的例子)
同步代码块的锁为对象中定义的LOCK ,同步方法的锁为this锁。
同步代码块和同步方法在同一实例中的表现:
同步代码块:
同步方法:
从结果可以看出:
无论是同步代码块还是同步方法,在同一实例中都能达到上锁的效果。
在不同实例中:
可以得到结论,lock锁和this锁无法锁住不同实例中的调用
class锁:
当方法加上static修饰实,此时的锁为class锁,class锁能够达到不同对象间上锁的效果