Метод startVirtualThread
Метод startVirtualThread класса Thread создает и сразу запускает новый виртуальный поток. В единственный параметр мы передаем задачу типа Runnable, которая будет выполняться в этом потоке. Метод возвращает объект Thread, представляющий запущенный виртуальный поток. Виртуальные потоки легковесны и позволяют создавать их в больших количествах без существенных накладных расходов.
Синтаксис
Thread.startVirtualThread(Runnable task)
Пример
Давайте запустим виртуальный поток, который выведет строку в консоль:
public class Main
{
public static void main(String[] args)
{
Thread thread = Thread.startVirtualThread(() -> {
System.out.println("running in virtual thread");
});
System.out.println(thread.isVirtual());
}
}
Результат выполнения кода:
"running in virtual thread"
"true"
Пример
Давайте запустим несколько виртуальных потоков и дождемся их завершения с помощью метода join:
public class Main
{
public static void main(String[] args) throws InterruptedException
{
Thread first = Thread.startVirtualThread(() -> {
System.out.println("first");
});
Thread second = Thread.startVirtualThread(() -> {
System.out.println("second");
});
first.join();
second.join();
System.out.println("done");
}
}
Результат выполнения кода:
"first"
"second"
"done"
Пример
Давайте сравним виртуальный поток, созданный методом startVirtualThread, с обычным потоком:
public class Main
{
public static void main(String[] args) throws InterruptedException
{
Thread virtual = Thread.startVirtualThread(() -> {
System.out.println("virtual");
});
Thread platform = new Thread(() -> {
System.out.println("platform");
});
platform.start();
virtual.join();
platform.join();
System.out.println(virtual.isVirtual());
System.out.println(platform.isVirtual());
}
}
Результат выполнения кода:
"virtual"
"platform"
"true"
"false"