在java中创建线程以在后台运行

时间:2012-09-23 10:23:28

标签: java multithreading

我想从我的主java程序中生成一个Java线程,该线程应该单独执行而不会干扰主程序。这是应该如何:

  1. 用户发起的主程序
  2. 某些业务是否有效,应该创建一个可以处理后台进程的新线程
  3. 一旦创建了线程,主程序就不应该等到生成的线程完成。事实上它应该是无缝的..

3 个答案:

答案 0 :(得分:72)

一种直截了当的方法是自己手动生成线程:

public static void main(String[] args) {

     Runnable r = new Runnable() {
         public void run() {
             runYourBackgroundTaskHere();
         }
     };

     new Thread(r).start();
     //this line will execute immediately, not waiting for your task to complete
}

或者,如果您需要生成多个线程或需要重复执行,您可以使用更高级别的并发API和执行程序服务:

public static void main(String[] args) {

     Runnable r = new Runnable() {
         public void run() {
             runYourBackgroundTaskHere();
         }
     };

     ExecutorService executor = Executors.newCachedThreadPool();
     executor.submit(r);
     //this line will execute immediately, not waiting for your task to complete
}

答案 1 :(得分:5)

更简单,使用 Lambda! (Java 8) 是的,这确实有效,我很惊讶没有人提到它。

new Thread(() -> {
    //run background code here
}).start();

答案 2 :(得分:4)

如果你喜欢用Java 8方式做,你可以这么简单:

public class Java8Thread {

    public static void main(String[] args) {
        System.out.println("Main thread");
        new Thread(this::myBackgroundTask).start();
    }

    private void myBackgroundTask() {
        System.out.println("Inner Thread");
    }
}