线程中运行了一个服务,这个服务里调用用户的一个方法,该方法需要限定超时时间,如果60妙还没有返回就算超时,这样如何做到该函数超时结束呢?

解决方案 »

  1.   

    Timer  可以定义一个计时器。
      

  2.   

    Timer能实现我的需求?好像它是在指定时间执行任务吧?我现在是随时执行任务,但从一开始执行后的60妙必需从服务函数中返回。这样的要求怎么达到呢?或者让我调用的函数发生TimeOutException.这个异常的发生时机就是从我调用该函数后的60没返回时产生。
      

  3.   

    消息和异步回调可以吗?参考了一下这个文章:http://kook1001.javaeye.com/blog/205739好像也不是我想要的啊
      

  4.   

    简单点的话就用一个while(true)循环:Date before = new Date();
    //调外部的函数
    while(true)
    {
       Date after = new Date();
       if(after-before>60*1000)
       {
          break;
        }
       if(//调外部函数返回值)
       {
          break;
        }
    }
      

  5.   

    看 java.util.concurrent 包提供的 Future 、ExecutorService、ScheduledExecutorService
      

  6.   

    Future其实也是另开线程运行,如果我已经在一个线程中呢,我不想在线程中启动线程,我想最直接的目的是A函数调用B函数,如果超过60s就超时。A已经在Thread中了,我不想在A的Thread中再开一个Thread来运行B。感觉这样效率会很低。