如何在java中实现超时以查看响应是否到来

0 java

我有两个功能,一个是主人,另一个是奴隶.通过主函数我正在尝试学习其他函数的行为.但我应该做任何计算是一个设定的时间间隔.在这一部分中,如何设置一个计时器,如果发生超时则标记为布尔变量,并了解是否发生超时?

func1   -----send message------>   func2  
             start timer
             if timeout occur, do something else
Run Code Online (Sandbox Code Playgroud)

Del*_*ima 5

您可以func2在另一个Thread中执行,并让您的原始Thread join()具有指定的超时.

当然,您需要注意正确的同步.

简单的例子(遗漏InteruptedException处理)

void func1(){
    Thread slave = new Thread(new Runnable(){
         public void run(){
             func2();
         }
    });
    slave.start();
    slave.join(100); // waits 100 milliseconds for slave to complete
    if(!slave.isAlive()){
      //slave completed its task
    }else{
      //slave not done yet, do something else
      somethingElse();
    }
 }
Run Code Online (Sandbox Code Playgroud)