比如一线程run(){},里面一些业务处理,但是可能很快就完了,也可能很久没结束,我需要让它运行比如5秒后,不管结果,都中止该线程!

解决方案 »

  1.   


    用定时器来做
    class Trd implements Runnable{
    public void run(){
    //do something
    }
    }
    class Main{
    Main(){
    final Thread t=new Thread(new Trd());
    t.run();
    final Timer timer=new Timer();
    timer.schedule(new TimerTask(){
    public void run(){
    t.interrupt();
    this.cancel();
    timer.cancel();
    }
    }, 5000);
    }
    }
      

  2.   

    下面是测试代码,还是哪里不对阿,线程没有结束!mport java.util.Date;
    import java.util.Timer;
    import java.util.TimerTask;public class ListenTest implements Runnable { public static void main(String[] args) {
    Main m = new Main();
    } public void run() {
    while (true) {
    try {
    System.out.println(new Date().getTime());
    Thread.sleep(2000);
    } catch (InterruptedException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    }
    }
    }class Main {
    Main() {
    final Thread t = new Thread(new ListenTest());
    t.run();
    final Timer timer = new Timer();
    timer.schedule(new TimerTask() {
    public void run() {
    t.interrupt();
    this.cancel();
    timer.cancel();
    }
    }, 5000);
    }
    }
      

  3.   

    timer.schedule(new TimerTask(){public void run(){}},5000)是延迟5秒钟执行,不是执行5秒停止,
      

  4.   

    问题应该在t.run();
    Main的构造函数执行到这里后,线程打开,就没有执行后面的了.就算不用while(true),定时器得不到折行