1.synchronize关键字用于加锁,用来解决多线程中,多个线程对同一资源访问所造成的数据不安全的问题
2.使用synchronized修饰,相当于加了一把锁,对于synchronized锁定的资源,同一时间,只能有一个线程访问,保证了原子性。
线程不安全的代码示例:
class Ticket implements Runnable {
private int num; //票的数量
Ticket(int num){
this.num = num;
}
//售票
public void sale() {
if(num>0) {
num--;
System.out.println(Thread.currentThread().getName()+"-------"+remain());
}
}
//获取剩余票数
public