java - 一分钟后立即停止线程

标签 java multithreading for-loop interrupt interrupt-handling

我有一个 JButton 来调用我的线程。但我真正想做的是在一分钟后停止线程! 我的 actionListener 方法是:

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
    new Frame2().setVisible(true);
    Thread t=new Thread(new Frame2());

    t.start();
    }    

我的线程只运行一分钟如下:

    public void run(){
    int i;
    while(!Thread.currentThread().isInterrupted()){
        for(i=0;i<=100;i++){

            if(i==100){
            Thread.currentThread().interrupt();
             }
        try {
            Thread.currentThread().sleep(600);
        } catch (InterruptedException ex) {
            System.out.print("THREAD CLOSED");
           return;
        }

    }
        System.out.print("DOING THINGS BLA BLA");
    }

}    

问题: 一分钟后我成功地停止了线程,但我无法做任何想要的事情。我只是想知道我怎样才能实现这一点,以便只运行线程一分钟,并且在线程中我想做我的事情!但是怎么办?这种方法我错了吗?如果是,那么正确的方法应该是什么?

最佳答案

做你想做的事情的最简单方法是拥有如下内容:

public void run() {
    long startTime = System.currentTimeMillis();
    while (System.currentTimeMillis() < startTime + 60000) {
        // do something useful
    }
}

“do something useful”应该是一个快速的操作,你的线程总是会持续略长于1分钟(1分钟+“do something useful”的时间)。

请注意您的原始代码:要从线程本身停止线程,不需要中断:您只需从 run() 方法返回即可。

关于java - 一分钟后立即停止线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16455765/

相关文章:

scala - 具有多个生成器的 for 循环如何在 Scala 中工作?

java - 如何解决 Spring 进程寻找 EJB JNDI 端点的错误?

java - 类和内部类的内存大小

java - 如何识别直接点击 JTable 中的 JCheckBox?

java - 强制 ActionBar 显示完整标题而不被截断?

在c中为linux创建一个新线程?

java - Java 并发的困难时期

c++ - 使用 std::thread 从 C++11 中的两个类调用函数

android - 在android中设置延迟

javascript - 范围总和---得到 "undefined"