产生的条件:
需要确定以下几个问题:
1.是否是多线程环境
2.是否有共享数据
3.是否有多条语句操作共享数据
解决的方法:
使用同步解决并发访问的问题:
1.在共享资源上(一般是一些方法)使用关键字:synchronized
2.作用:当一个线程访问时,其它线程全部列队等待;这种机制保证了这个方法在同一时刻
只能被一个线程访问;
3.synchronized语法:
1.同步代码块:
synchronized(被锁的对象){
//同步代码
}
注:被锁的对象:当一个线程访问此段代码时,会将这个对象中所有的"同步代码块"和"同步方法"加锁, |
|