某个线程操作共享数据的过程中,尚未操作完成时,其他线程参与进来。
Java中,我们通过同步机制解决线程安全问题。
方式一:同步代码块
synchronized(同步监视器){
需要被同步的代码
}
说明:操作共享数据的代码,即为需要被同步的代码
共享数据:多个线程共同操作的变量
同步监视器,俗称:锁。任何一个类的对象,都可以充当锁。
要求:多个线程必须要共用同一把锁
方式二:同步方法
如果操作共享数据的代码完整的声明在一个方法中,我们可以将此方法声明为同步的
1.同步方法仍然设计到同步监视器,只是不需要显示的声明
2.非静态的同步方法,同步监视器是this
静态同步方法,同步监视器是类