Synchronized
通过以下代码发现:
如果三个线程操作同一块数据 进行更改时 会发生数据混乱情况
根本原因在于 java的抢占式线程调度模型<br /> 多个线程互相抢CPU的执行权<br /> 就会导致多个线程同时操作数据的更改<br /> 发生数据混乱
此种问题就是线程安全问题
判断线程安全问题的依据:<br /> 是否是多线程环境<br /> 是否有共享数据<br /> 是否有多条语句操作共享数据
解决思路:<br /> 把多个语句操作共享数据的代码给锁起来,让任意时刻只能有一个线程执行即可。<br /> 只有其中一个线程执行完毕 其他线程才能继续抢占执行<br /> 一旦其中一个线程抢占成功 立马锁起来<br /> 执行完毕再次解锁<br /> <br /> **把代码锁起来的技术叫:**<br />** 线程同步**
线程同步的实现方式:
1. 同步代码块<br /> 2. 同步方法<br /> 3. 同步锁(Lock锁)
同步代码块:<br /> synchronized(锁对象){
}<br /> 多个线程必须保证锁对象一致
类名.class 表示类对象(class文件被加载进内存中的唯一对象)
new Person() 类的对象
锁对象必须保持 唯一性