我需要澄清关于javaron中同步关键字的工作原理。Java同步关键字 - 它是否保护类方法不被同时执行?
使用下面的示例类。现在
class Carrier {
private String[] _collection = new String[2];
public Carrier() {
this._collection[0] = "abc";
this._collection[1] = "123";
}
public syncronized void change(int cId) {
Thread.sleep(3000);
this._collection[cId] = "changed";
}
}
,在应用中的一些地方,它引用了运营商级的同一个对象实例中,.change()方法被调用时,有可能在同一时间。
...carrier.change(1);
...
...carrier.change(1);
请问syncronized关键字防止方法的asyncronized执行?它是否将呼叫排队到.change(),等待每个人完成?
'它会简单地排队呼叫。变化()'。取决于你排队的意思。执行顺序没有指定,所以它不是一个有序队列,但是,其他线程将被迫等待。 – Kaj