1、同步关键字:synchronized
当多个线程共享一个数据时,如果处理不当,会很容易出现隐患,所以多线程编程时经常要解决线程同步问题。java的多线程机制中提供了关键字synchronized 方法来声明同步方法。
锁不属于线程,而属于对象,一个线程可以拥有多个对象的锁,而只有同一个对象的锁之间才会存在互斥。
2、声明synchronized 方法的一般格式:
[modifier] synchronizedreturnType methodName([parameterList])
{/*方法体*/}
3、示例:
public class Store {
private int count;
public final int SIZE;
public Store (int size){
this.SIZE= size;
count =0;
}
public synchronized void addData(){
while(count == SIZE){//停止生产
try{
this.wait();//等待并释放锁
}catch(InterruptedException e){
e.printStackTrace();
}
}
count++;//生产
System.out.println("Thread.currentThread(".getName()+"add Data:"+count);
this.notifyAll();//唤醒其他线程
}
}