我想知道在java中实现某种后台任务的最有效方法是什么(我想这将是某种非阻塞线程)。更确切地说 - 我有一些java代码,然后在某些时候我需要执行一个长时间运行的操作。我想要做的是在后台执行该操作,以便程序的其余部分可以继续执行,并且当该任务完成时,只需更新一些特定的对象。然后,其他组件将检测到此更改。
答案 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,给它一个低优先级,并做一个循环:
这取决于你在线程中真正想做的事情
答案 4 :(得分:-1)
是的,你想要将操作转移到它自己的线程上。如果您不小心并且意识到这意味着什么以及资源将如何交互,添加新线程可能会有点危险。这是一个很好的introduction to threads,可以帮助您入门。