仮想スレッド
Javaランタイムが実装する軽量スレッド。JDKのブロッキング操作の間はOSスレッドを手放すため、数百万本を1つのJVMで走らせられる。JDK 21で正式機能になった。
- 概念URI
https://comcomponent.com/knowledge/virtual-thread/
- 別名・表記
- Virtual Threads
- 最終確認日
- 2026-08-01
- 機械可読データ
- JSON-LD
この概念が関わる関係
- 仮想スレッドはI/Oバウンドなタスクに対する本記事の推奨です。JDKのブロッキング操作の間はOSスレッドを手放すため、I/O待ちが主体のタスクは「タスク1つに仮想スレッド1本」で走らせる。newVirtualThreadPerTaskExecutorの形で使い、決してプールしない。 / 確度: 条件付きの関係 / 確認日: 2026-08-22 出典 出典
- 仮想スレッドをCPUバウンドなタスクに用いることは推奨されません。仮想スレッドは速いスレッドではなくスケール(スループット)のための機能で、コードの実行速度は変わらない。CPUバウンドの並列化は従来どおりコア数程度のプラットフォームスレッドが適任である。 / 確度: 確立した関係 / 確認日: 2026-08-22 出典
- 仮想スレッドはキャリアスレッドへのピン留めの原因になることがあります。JDK 21〜23ではsynchronizedブロック・メソッド内でブロックすると仮想スレッドがキャリアスレッドにピン留めされ、スケールの利点が失われる制約があった。 / 確度: 条件付きの関係 / 確認日: 2026-08-02 出典 出典
- スレッドダンプ(jstack / jcmd)を仮想スレッドに用いることは推奨されません。従来形式のスレッドダンプはプラットフォームスレッド向けで、アプリの仮想スレッドは含まれない。仮想スレッドを使う構成では jcmd Thread.dump_to_file -format=json を使う。 / 確度: 確立した関係 / 確認日: 2026-08-22 出典
- 構造化並行性(StructuredTaskScope)は仮想スレッドを利用します。構造化並行性APIは関連するサブタスク群を1つの作業単位として扱い、エラー伝播とキャンセルを構造化する。JDK 25の第5次プレビューでStructuredTaskScope.open()の形に改められ、JDK 26でも第6次プレビューとして継続しているため、利用にはプレビュー機能の有効化が必要になる。 / 確度: 条件付きの関係 / 確認日: 2026-08-02 出典 出典
この概念を扱う記事
一次資料
このページはサイトの知識グラフ(_data/knowledge/)から自動生成されています。誤りの指摘はお問い合わせからお願いします。