(需要同步操作共享数据的代码块)
一、产生的原因
1、线程任务中有共享数据;
2、线程任务中有多条对共享数据的操作。
一个线程在操作共享数据的过程中,其他线程参与了运算,造成了数据的错误。
二、解决思想
只要保证多条操作共享数据的代码在某一时间段,被一条线程执行,在执行期间不允许其他线程参与计算。
三、解决方式
1、用同步代码块
synchronized(对象){
需要被同步的代码块
}
其中的 “对象” 就是所谓的 “锁” ,就是同步机制。要保证锁的唯一性!
同步的前提:多线程在同步中必须使用同一个锁(对象)!!
2、同步函数。
在函数的返回值前面加上synchronized的关键字
同步函数使用的锁就是this对象
字节码对象表示方式: 类名.class