【发布时间】:2014-06-27 09:30:41
【问题描述】:
我不明白为什么使用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();
}
}
}
【问题讨论】:
-
为什么
synchronized(object)比synchronized(this)更好。我一直认为这取决于情况
标签: java multithreading synchronize