线程在执行过程中,通过cpu的调度,执行轨迹不确定,对共享资源的访问很容易造成数据的错误。我们称这个错乱称为线程安全问题。
同步概念
原子性操作:一个操作要么一次性做完,要么根本不开始,不存在中间状态。
同步就是让操作保持原子性,java提供了两种方式实现同步。即同步代码块和同步方法。
同步代码块
把需要同步的操作放到同步代码块中:
@Override public void run() { synchronized(mutex){ } }
mutex 称为互斥锁/同步锁。对共享资源进行加锁实现同步。一般用共享资源作为同步锁,也称同步监视器。