我想从我的主java程序中生成一个Java线程,该线程应该单独执行而不会干扰主程序。这是应该如何:
答案 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");
}
}