非void方法需要同步关键字

  • 本文关键字:同步 关键字 void 方法 java
  • 更新时间 :
  • 英文 :


如果方法具有返回类型,并且由两个或多个线程访问,则需要将同步块或关键字与此方法一起使用?

否。如果该方法确实更改了对象的任何字段(即更改对象的状态),并且同一对象在两个线程之间共享,那么您可能需要它

当您读取可以在另一个线程中更改的字段,或写入可能在另一线程中读取的字段时,可能需要使用synchronized。没有关于何时必须或不得使用synchronized的特定规则,否则该语言将能够为您做到这一点。由您根据您的用例来决定。

这不是必需的。例如,如果你的类没有提供修改这个类实例的方法(那么这个类被认为是不可变的),你就不需要同步。

但是,只要至少有一个线程可以写入某个成员变量,并且存在可以同时读取或写入该变量的其他线程,就需要通过使用synchronized关键字或显式操作锁来同步对该变量的访问。在某些情况下,您还可以使用原子操作(例如AtomicInteger)。

最新更新