Synchronized

通过以下代码发现:
如果三个线程操作同一块数据 进行更改时 会发生数据混乱情况

  1. 根本原因在于 java的抢占式线程调度模型<br /> 多个线程互相抢CPU的执行权<br /> 就会导致多个线程同时操作数据的更改<br /> 发生数据混乱
  2. 此种问题就是线程安全问题
  3. 判断线程安全问题的依据:<br /> 是否是多线程环境<br /> 是否有共享数据<br /> 是否有多条语句操作共享数据
  4. 解决思路:<br /> 把多个语句操作共享数据的代码给锁起来,让任意时刻只能有一个线程执行即可。<br /> 只有其中一个线程执行完毕 其他线程才能继续抢占执行<br /> 一旦其中一个线程抢占成功 立马锁起来<br /> 执行完毕再次解锁<br /> <br /> **把代码锁起来的技术叫:**<br />** 线程同步**

线程同步的实现方式:

    1. 同步代码块<br />        2.  同步方法<br />        3. 同步锁(Lock锁)

同步代码块:<br />        synchronized(锁对象){


    }<br />        多个线程必须保证锁对象一致


类名.class 表示类对象(class文件被加载进内存中的唯一对象)

new Person() 类的对象

锁对象必须保持 唯一性