为解决操作的不完整性问题,在Java 语言中,引入了对象互斥锁的概念,来保证共享数据操作的完整性。每个对象都对应于一个可称为"
互斥锁" 的标记,这个标记用来保证在任一时刻,只能有一个线程访问该对象。 关键字synchronized 来与对象的互斥锁联系。当某个对象用synchronized
修饰时,表明该对象在任一时刻只能由一个线程访问。
public void push(char c){
synchronized(this){ //this表示Stack的当前对象
data[idx]=c;
idx++;
}
}
public char pop(){
synchronized(this){ //this表示Stack的当前对象
idx--;
return data[idx];
}
}
--观看动画--
synchronized 除了象上面讲的放在对象前面限制一段代码的执行外,还可以放在方法声明中,表示整个方法为同步方法。
public synchronized void push(char c){
…
}
如果synchronized用在类声明中,则表明该类中的所有方法都是synchronized的。
|