java - 你如何在Java中重复调用一个Thread?

标签 java multithreading

我希望线程每 500 毫秒在后台执行一次。为此,我扩展了一个 Thread,实现了 ActionListener,并将我扩展的类放入了一个 Timer。定时器每 500 毫秒调用一次 run()。但是,当此线程从 Internet 下载内容时,我的整个 Swing GUI 会卡住。我希望它在后台运行,而不会在等待 IO 完成时卡住 GUI。我还让下载器在我们等待 500 毫秒之前完成下载。

调用gogogo()初始化整个过程:

public final class Downloader extends Thread implements ActionListener
{
public static void gogogo()
{
    t= new Downloader();
    new Timer(500, (ActionListener) t).start();

}

public void run() 
{
    doStuff(); //the code that i want repeatedly called
}

public void actionPerformed(ActionEvent e) 
{
    run();
}
}

最佳答案

只需启动线程一次,使其循环,并在每次迭代时执行 Thread.sleep(500L)。这可能比每 500 毫秒启动一个全新的线程更有意义。如果可以避免,就没有理由承担相关费用。

关于java - 你如何在Java中重复调用一个Thread?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/648663/

相关文章:

java - java.io.FileNotFoundException:app/libs/perfectjpattern-core-1.0.0.jar(无此文件或目录)

java - 在android上解码加密信息

java - 在 JavaFX 中的 GridPane 的特定单元格上设置背景颜色

java - 通过 Groovy 脚本访问 Java 局部变量

java事件队列

java - 未能应用插件 [class 'io.spring.gradle.dependencymanagement.DependencyManagementPlugin']?

c - C中每个连接线程方法的登录超时

c - 解决linux核心转储问题

c++ - 延迟线程启动 - 通知所有线程而不唤醒所有线程

linux - 在可运行的 jar 中停止子线程