Создавать потоки в java для работы в фоновом режиме
Я хочу создать поток Java из моей основной Java-программы, и этот поток должен выполняться отдельно, не мешая основной программе. Вот как это должно быть:
- Основная программа, инициированная пользователем.
- Работает ли какой-нибудь бизнес и должен создать новый поток, который мог бы обрабатывать фоновый процесс.
- Как только поток создается, основная программа не должна дожидаться завершения порожденного потока. На самом деле он должен быть бесшовным.
Ответы
Ответ 1
Один прямой способ - вручную вручную создать поток:
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
}
Ответ 2
Это еще один способ создания потока с использованием анонимного внутреннего класса.
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();
}
}
Ответ 3
И если вы хотите сделать это на 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");
}
}