gpt4 book ai didi

java - 了解同步块(synchronized block)

转载 作者:行者123 更新时间:2023-12-02 08:33:25 26 4
gpt4 key购买 nike

我不明白为什么最好使用 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com