loom

The Redefine Team Lv5
  1. download Loom Early-Access Builds

    open https://jdk.java.net/loom/ download linux tar.gz

    decompression to .jdks/jdk-16

  2. 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);

    }

    }
    }
  3. 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 进行许可。
评论
目录
loom