import static java.util.concurrent.TimeUnit.SECONDS;
import java.util.concurrent.Executors;
import java.time.Instant;
public class MyClass {
static int func1() throws Exception {
SECONDS.sleep(3);
return 1;
}
static int func2() throws Exception {
SECONDS.sleep(5);
return 2;
}
public static void main(String args[]) throws Exception {
System.out.println(Instant.now());
try (var executor = Executors.newVirtualThreadPerTaskExecutor()) {
var r1 = executor.submit(() -> func1());
var r2 = executor.submit(() -> func2());
System.out.println(r1.get() + r2.get());
}
System.out.println(Instant.now());
}
}