代码之家  ›  专栏  ›  技术社区  ›  markovuksanovic

Java后台任务

  •  7
  • markovuksanovic  · 技术社区  · 14 年前

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

    5 回复  |  直到 14 年前
        1
  •  2
  •   ZZ Coder    14 年前
        2
  •  10
  •   Michael Mrozek    14 年前

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

    // 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();
    
        3
  •  0
  •   pritam potnis    14 年前

    做一根线。将此线程标记为守护进程。当唯一运行的线程都是守护进程线程时,JVM退出。

        4
  •  -1
  •   phtrivier    14 年前

    天真的想法:你可以创建线程,给它一个低优先级,并做一个循环:

    • 做一点工作
    • 使用yield或sleep让其他线程在parallel中工作

    这将取决于你在你的线程中实际想要做什么。

        5
  •  -1
  •   Ryan Elkins    14 年前

    是的,您将希望把操作转到它自己的线程上。如果您不小心并且不知道这意味着什么以及资源将如何交互,那么添加新线程可能有点危险。这是一个好消息 introduction to threads 帮助你开始。