在Java中,synchronized關鍵字用于控制多個線程對共享資源的訪問。為了優化鎖粒度,可以采取以下幾種策略:
public synchronized void syncMethod() {
// 只保護關鍵部分
}
public synchronized void syncMethod() {
int localVar = sharedVar;
// 使用localVar進行操作
}
private final ReentrantLock lock = new ReentrantLock();
public void syncMethod() {
lock.lock();
try {
// 同步代碼
} finally {
lock.unlock();
}
}
private AtomicInteger atomicVar = new AtomicInteger();
public void atomicIncrement() {
atomicVar.incrementAndGet();
}
private final ThreadLocal<Integer> threadLocalVar = new ThreadLocal<>();
public void setThreadLocalVar(int value) {
threadLocalVar.set(value);
}
public int getThreadLocalVar() {
return threadLocalVar.get();
}
通過以上策略,可以有效地優化Java中的鎖粒度,提高程序的性能和可擴展性。