Java19でプレビュー、Java21で正式リリースとなった Virtual Thread(仮想スレッド)を使ってみた。ラムダ式とやらは使ったことないので、理解の複雑化回避のためあえて使わずに。
ThreadExecutor.java
package pkg;
public class ThreadExecutor {
public static void main(String[] args) throws InterruptedException {
MyRunnable runnable = new MyRunnable();
// プラットフォームスレッドとして実行する場合(従来からのスレッド)
Thread pthread = Thread.ofPlatform().start(runnable);
System.out.println("pthread is Virtual ? : " + pthread.isVirtual());
// なんとなく、スレッドが終了するまで待つ
pthread.join();
// 仮想スレッドとして実行する場合(新しいスレッド)
Thread vthread = Thread.ofVirtual().start(runnable);
System.out.println("vthread is Virthal ? : " + vthread.isVirtual());
// なんとなく、スレッドが終了するまで待つ
vthread.join();
}
}
/**
* スレッドで実行したい処理
*/
class MyRunnable implements Runnable {
@Override
public void run() {
System.out.println("--> I am Thread. I am Virtual ? : "
+ Thread.currentThread().isVirtual());
}
}
実行結果
C:\>java -version
java version "21" 2023-09-19 LTS
Java(TM) SE Runtime Environment (build 21+35-LTS-2513)
Java HotSpot(TM) 64-Bit Server VM (build 21+35-LTS-2513, mixed mode, sharing)
C:\>java pkg\ThreadExecutor.java
pthread is Virtual ? : false
--> I am Thread. I am Virtual ? : false
vthread is Virthal ? : true
--> I am Thread. I am Virtual ? : true
なるほど。