java后台任务

时间:2010-05-10 16:23:41

标签: java multithreading

我想知道在java中实现某种后台任务的最有效方法是什么(我想这将是某种非阻塞线程)。更确切地说 - 我有一些java代码,然后在某些时候我需要执行一个长时间运行的操作。我想要做的是在后台执行该操作,以便程序的其余部分可以继续执行,并且当该任务完成时,只需更新一些特定的对象。然后,其他组件将检测到此更改。

5 个答案:

答案 0 :(得分:10)

你想创建一个新线程;根据方法需要多长时间,您可以将其内联:

// some code
new Thread(new Runnable() {
    @Override public void run() {
        // do stuff in this thread
    }
}).start();

或者只是创建一个新课程:

public class MyWorker extends Thread {
    public void run() {
        // do stuff in this thread
    }
}

// some code
new MyWorker().start();

答案 1 :(得分:2)

答案 2 :(得分:0)

制作一个帖子。将此主题标记为守护进程。当唯一运行的线程都是守护程序线程时,JVM退出。

答案 3 :(得分:-1)

天真的想法:你可能能够创建Thread,给它一个低优先级,并做一个循环:

  • 做一些工作
  • 使用yield或sleep让其他线程以并行方式工作

这取决于你在线程中真正想做的事情

答案 4 :(得分:-1)

是的,你想要将操作转移到它自己的线程上。如果您不小心并且意识到这意味着什么以及资源将如何交互,添加新线程可能会有点危险。这是一个很好的introduction to threads,可以帮助您入门。