loom
download Loom Early-Access Builds
open https://jdk.java.net/loom/ download linux tar.gz
decompression to .jdks/jdk-16
cat LoomApp.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
import java.util.concurrent.Executors;
import java.util.concurrent.Callable;
import java.util.List;
import java.util.concurrent.CompletableFuture;
import java.time.Instant;
import java.util.concurrent.TimeUnit;
public class LoomApp{
public static void main (String [] args) throws Exception{
var thread = Thread.startVirtualThread(() -> System.out.println("virtualthread Hello"));
thread.join();
var thread1 = Thread.builder().virtual().task(() -> System.out.println("virtual task hello")).build();
var thread2 = Thread.builder()
.virtual()
.name("bob")
.task(() -> System.out.println("virtual name task I'm Bob!"))
.start();
var factory = Thread.builder().virtual().name("worker", 0).factory();
try(var executor = Executors.newVirtualThreadExecutor()){
executor.execute(() -> System.out.println("Hello"));
executor.execute(() -> System.out.println("Hi"));
}
try(var executor = Executors.newVirtualThreadExecutor()){
Callable<String> task1 = () -> "invokeAny foo";
Callable<String> task2 = () -> "invokeAny bar";
Callable<String> task3 = () -> "invokeAny baz";
var result = executor.invokeAny(List.of(task1, task2, task3));
}
try(var executor = Executors.newVirtualThreadExecutor()){
Callable<String> task1 = () -> "completable future foo";
Callable<String> task2 = () -> "completable future bar";
Callable<String> task3 = () -> "completable future baz";
var cfs = executor.submitTasks(List.of(task1, task2, task3));
CompletableFuture.completed(cfs)
.map(CompletableFuture::join)
.forEach(System.out::println);
}
var seconds = 3;
var deadline = Instant.now().plusSeconds(seconds) ;
try(var executor = Executors.newVirtualThreadExecutor().withDeadline(deadline)){
Callable<String> task1 = () -> "deadline foo";
Callable<String> task2 = () -> "deadline bar";
Callable<String> task3 = () -> "deadline baz";
Callable<String> task4 = () -> {
var sleepSeconds = seconds - 1;
TimeUnit.SECONDS.sleep(sleepSeconds);
return "deadline task4 by sleep " + sleepSeconds + " seconds";
};
var cfs = executor.submitTasks(List.of(task1, task2, task3, task4));
CompletableFuture.completed(cfs)
.map(CompletableFuture::join)
.forEach(System.out::println);
}
}
}run LoomApp.java
.jdks/jdk-16/bin/java LoomApp.java
- 标题: loom
- 作者: The Redefine Team
- 创建于 : 2020-07-17 14:12:04
- 更新于 : 2023-05-23 18:52:03
- 链接: https://redefine.ohevan.com/2020/07/17/loom/
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论