4.11. 仮想スレッド


Red Hat build of OpenJDK 21 では、仮想スレッドが導入されています。これは、高スループットの同時実行アプリケーションの作成、保守、監視の労力を軽減する軽量スレッドです。アプリケーションが数千を超える同時スレッドを使用し、ワークロードが CPU に依存していない場合は、仮想スレッドを使用するとアプリケーションを最適化できます。

仮想スレッドはスレッドローカル変数と割り込みをサポートします。仮想スレッドは、従来のスレッドが実行できる任意のコードも実行できます。したがって、スレッドの作成方法を変更することで、仮想スレッドのみを使用するようにソースコードを移行できます。

次の例では、実行可能なインスタンスを実行する仮想スレッドを作成します。

Thread thread = Thread.ofVirtual().name("example").unstarted(runnable);
Copy to Clipboard

次の例は、ループを使用して仮想スレッドを作成する方法を示しています。仮想スレッドはプールを必要としないため、スレッドプールは作成されません。同時実行性を制限する場合は、代わりにセマフォを使用できます。

try (var executor = Executors.newVirtualThreadPerTaskExecutor()) {
	IntStream.range(0, 10000).forEach(i -> {
    	  executor.submit(() -> {
        	  Thread.sleep(Duration.ofSeconds(1));
        	  return i;
    	});
    });
}  // executor.close() is called implicitly, and waits
Copy to Clipboard

上記の例では、同時に実行される 10,000 個の仮想スレッドが作成されます。JDK は、少数のオペレーティングシステムスレッド、または 1 つのスレッドのみでコードを実行できるため、オーバーヘッドが削減されます。

詳細は、JEP 444: Virtual Threads を参照してください。

トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat