and*_*ndy 10 java concurrency multithreading
如果我有一个同步的公共方法和私有方法:
public synchronized void doSomething() {
doSomethingElse()
}
private void doSomethingElse() {
}
Run Code Online (Sandbox Code Playgroud)
我需要同步私有方法吗?
NPE*_*NPE 15
这取决于:
doSomethingElse可以安全地同时呼叫,那么你不需要synchronized.synchronized方法调用,那么它不需要synchronized(但标记它不会造成伤害);synchronized自己的方法调用它,那么它必须是synchronized.否:如果doSomethingElse()调用的唯一方法是通过另一个同步的方法。
可能是:如果您doSomethingElse()以其他方式调用,通过未同步的方法,您需要保护它免受并发访问。
这取决于你在做什么.您需要确保串行访问doSomethingElse()吗?
如果是这样,并且唯一的调用doSomethingElse()是doSomething(),那么不,你不需要同步.但是如果其他方法可以调用doSomethingElse(),那么是的,你也应该同步它.