在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中的锁粒度,提高程序的性能和可扩展性。