在java中创建线程以在后台运行
我想从我的主java程序中生成一个Java线程,该线程应该单独执行而不会干扰主程序。 这是应该如何:
- 主程序由用户发起
- 有些业务是否有效,应该创建一个可以处理后台进程的新线程
- 一旦创建了线程,主程序就不应该等到生成的线程完成。 事实上它应该是无缝的..
一种直接的方法是自己手动生成线程:
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"); } }