1、synchronized关键字的作用
能够保证在同一时刻只有一个线程执行该段代码,达到保证线程安全的效果。
2、synchronize的两个用法
对象锁:包括同步方法和同步代码块。
类锁:synchronize修饰的静态的方法或指定锁为class对象。
3、多线程访问同步方法的7种情况
(1)两个线程同时访问一个对象的同步方法:串行执行(一个一个的执行)。
(2)两个线程访问的是两个对象的同步方法:并行执行。
(3)两个线程访问的是synchronize修饰的静态方法:串行执行。
(4)同时访问同步方法和非同步方法:并行执行,sysynchronize只作用于修饰的方法,对其他方法无影响。
(5)访问同一个对象的不同的普通同步方法:串行执行。
(6)同时访问静态的同步方法和非静态的同步方法:并行执行。
(7)方法抛异常后,会释放锁。
7种情况的3个核心思想:
(1)一把锁只能同时被一个线程获取,没拿到锁的线程必须等待。(1,5)
(2)每个实例都对应有自己的一把锁,不同实例直接互不影响,类锁例外(2,3,4,6)
(3)方法正常执行完毕或抛出异常,都会释放锁。(7)