採択 2022/11/27 10:00〜 Track C (#jjug_ccc_c) Video:40min + Live:10min

バーチャルスレッド詳細 JJUG CCC 2022 Fall

Intermediate Java SE Yes (YouTube)
6
mike_neck もちだ mike_neck

概要

Java19 よりバーチャルスレッドがプレビュー API としてリリースされました。
バーチャルスレッドは既存のスレッドに比べると遥かに軽量で、
高スループットの並行アプリケーションを容易に書けるようになります。

このセッションでは仕様書、OpenJDK のコード、サンプルプログラムを通じて、
バーチャルスレッドの動作を明らかにしていこうと思います。

目標

  • バーチャルスレッドの仕組みを理解する。
  • バーチャルスレッドで避けたほうがよいプログラムを理解する。
  • アプリケーションにどのような変更が必要なのか?あるいは変更が必要ないのかがわかるようになる。

扱わないこと

以下は本セッションの理解には欠かせないものの、扱う時間がないため、事前に学習されることをおすすめします。

  • 従来のスレッドについての理解
  • Fork/Join フレームワークについての理解
  • poll/epoll/kqueue/wepoll によるネットワーク多重化

内容予定リスト

  1. VirtualThread の意義
    • サーバーアプリケーションの課題
    • 非同期型・別API型から Thread への回帰
    • ざっくり VirtualThread
  2. VirtualThread にふれる
    • Thread.Builder API
    • ExecutorService API
    • CarrierThreadForkJoinPool
    • マウンティングとアン・マウンティング
    • 停止と再開
  3. 既存アプリケーションの移行
    • VirtualThread を使うのが適切なアプリケーションの条件
    • アプリケーションコードをそのまま使える条件
    • PIN とは?発生の有無を診断する
    • スレッドローカル実験
    • JFR/JMX によるスレッドの監視
  4. 他APIの変更
    • ThreadGroup/Thread の変更・非互換
    • JEP-428 Structured Concurrency