设为首页 加入收藏

TOP

Java线程的超时控制学习
2014-11-24 02:09:02 来源: 作者: 【 】 浏览:0
Tags:Java 线程 超时 控制 学习

  开始的时候我一看这么多,也没多想,直接下载用了,但是程序里的bug依旧,以为程序里还有其它的问题,折腾了小半天,发现原来超时控制没有起作用,仔细核实了一下以下的代码,发现这段代码根本得到不到想要的结果。


  /**


  * 本线程设置了一个超时时间


  * 该线程开始运行后,经过指定超时时间,


  * 该线程会抛出一个未检查异常通知调用该线程的程序超时


  * 在超时结束前可以调用该类的cancel方法取消计时


  * @author solonote


  */


  public class TimeoutThread extends Thread{


  /**


  * 计时器超时时间


  */


  private long timeout;


  /**


  * 计时是否被取消


  */


  private boolean isCanceled = false;


  /**


  * 当计时器超时时抛出的异常


  */


  private TimeoutException timeoutException;


  /**


  * 构造器


  * @param timeout 指定超时的时间


  */


  public TimeoutThread(long timeout,TimeoutException timeoutErr) {


  super();


  this.timeout = timeout;


  this.timeoutException = timeoutErr;


  //设置本线程为守护线程


  this.setDaemon(true);


  }


  /**


  * 取消计时


  */


  public synchronized void cancel()


  {


  isCanceled = true;


  }


  /**


  * 启动超时计时器


  */


  public void run()


  {


  try {


  Thread.sleep(timeout);


  if(!isCanceled)


  throw timeoutException;


  } catch (InterruptedException e) {


  e.printStackTrace();


  }


  }


  }


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Java资源获取分析 下一篇Java可变参数使用

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: