Java 将TimerTask中的异常抛出到另一个方法

Java 将TimerTask中的异常抛出到另一个方法,java,exception,timer,timertask,Java,Exception,Timer,Timertask,我想将以下异常抛出到另一个方法,但我不知道如何正确地实现这一点 public void startTimeoutHandler() throws TimeoutException { timer = new Timer(); timerTask = new TimerTask() { @Override public void run() { throw new TimeoutException();

我想将以下异常抛出到另一个方法,但我不知道如何正确地实现这一点

  public void startTimeoutHandler() throws TimeoutException
  {
    timer = new Timer();
    timerTask = new TimerTask()
    {
      @Override
      public void run()
      {
        throw new TimeoutException();        
      }
    };
  }
谢谢大家!

  • TimerTask
    实际上是
    Runnable
    的实现,这是一个相当有限的抽象<代码>运行()无法返回值或引发选中的异常

  • 用法:它也是为实例可能由另一个线程执行的类而设计的,但与
    Runnable
    不同,它的
    call()
    方法可以返回结果并抛出选中的异常


据我所知,您希望通过在另一个线程执行中抛出异常来中断它。这是不可能的。在Java中干扰另一个线程执行的唯一方法是中断它。

除非你的另一个
线程正在监听,否则你不能这样做。我建议使用一个
ScheduledExecutorService
,以便另一个
线程可以通过
将来的
接收这些异常。请注意,
java.util.Timer
实际上并不建议在新代码中使用。
class MyTask implements Callable<Integer>{

  @Override
  public Integer call() throws TimeoutException{
    throw new TimeoutException(); 
  }
}

void usingCallable(MyTask e) {
    e.call(); // error: must catch Exception
}
 <V> ScheduledFuture<V>  schedule(Callable<V> callable, long delay, TimeUnit unit)