我不明白为什么最好使用 synchronized(syncObject)
比 synchronized(this)
.例如,这个类:
public class Pool implements ObjectPool {
private Object[] pool;
private int initialCapacity;
private int available = 0;
private int waiting = 0;
private final Object syncObject = new Object();
public Pool(int initialCapacity) {
this.initialCapacity = initialCapacity;
pool = new Object[initialCapacity];
}
public void releaseObject(Object o) throws Exception {
synchronized (syncObject) {
pool[available] = o;
available++;
}
if (waiting > 0) {
notify();
}
}
}
最佳答案
因为如果你使用 this
,然后另一个线程试图执行另一个方法将不得不等待,而如果你使用一个对象作为锁,你只限制这个关键部分。
关于java - 了解同步块(synchronized block),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24448460/