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

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

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

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

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 } 

这是使用匿名内部类创建线程的另一种方法。

  public class AnonThread { public static void main(String[] args) { System.out.println("Main thread"); new Thread(new Runnable() { @Override public void run() { System.out.println("Inner Thread"); } }).start(); } } 

如果你喜欢用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"); } }