同步方法

2022-09-04 06:27:23

如果我有一个同步的公共方法和一个私有方法:

public synchronized void doSomething() {
    doSomethingElse()
}

private void doSomethingElse() {
}

我是否需要同步私有方法?


答案 1

这取决于:

  • 如果可以安全地并发呼叫,则不需要 .doSomethingElsesynchronized
  • 如果不是,那么答案取决于从哪里调用它:
    • 如果它只是从其他方法调用的,那么它就不需要(但这样标记它不会造成伤害);synchronizedsynchronized
    • 如果可以从本身不是的方法调用它,那么它必须是 。synchronizedsynchronized

答案 2

这取决于你在做什么。您是否需要确保串行访问 ?doSomethingElse()

如果是这样,并且唯一调用的是,那么不,您不需要同步。但是,如果其他方法可以调用 ,那么是的,您也应该同步它。doSomethingElse()doSomething()doSomethingElse()


推荐