【问题标题】:Does wait(some time) must always be in synchronized method?等待(一段时间)是否必须始终采用同步方法?
【发布时间】:2012-02-08 12:50:12
【问题描述】:

我有多线程应用程序。有时在某些线程中由于外部网络原因发生异常。我认为使用例如等待(60000) - 1 分钟重新连接。 我是否应该明确输入同步方法,例如:

public void synchronized reconnect(){
     wait(60000);
................. }

或者有可能:

public void reconnect(){
     wait(60000);
................. }

谢谢。

【问题讨论】:

    标签: java database multithreading wait synchronized


    【解决方案1】:

    正如 Eugene 所写,当前线程必须获取对象上的锁。不需要通过同步方法完成。你也可以通过显式同步来获取锁:

    public void reconnect() {
       // some code 
    
       synchronized (this) {
          wait(60000);
       }
    
       // some other code
    }
    

    这取决于你需要达到的目标。

    【讨论】:

      【解决方案2】:

      必须如此!您必须先获得 Object 的锁,然后才能真正等待。

      干杯,尤金。

      【讨论】:

        猜你喜欢
        • 2019-10-09
        • 1970-01-01
        • 2023-04-06
        • 1970-01-01
        • 2018-05-15
        • 1970-01-01
        • 1970-01-01
        • 2014-01-02
        • 2018-02-05
        相关资源
        最近更新 更多