バージョン
- JDK 23向けGraalVM(最新)
- JDK 24向けGraalVM(早期アクセス)
- JDK 21向けGraalVM
- JDK 17向けGraalVM
- アーカイブ
- Devビルド
マルチスレッド
GraalVM上でJavaScriptを実行すると、マルチスレッドがサポートされます。使用状況に応じて、複数のContext
オブジェクトまたは複数のWorkerスレッドを使用して並列JavaScriptコードを実行するためのスレッドを使用できます。
JavaとJavaScriptでのマルチスレッド #
マルチスレッドは、Java相互運用性の中でJavaScriptを実行する場合にサポートされます。GraalVMでサポートされるマルチスレッド実行の基本モデルは「共有なし」モデルです。これは、どのJavaScript開発者にも馴染みのあるものです。
- 任意の数のJavaScript
Context
を作成できますが、一度に1つのスレッドで使用される必要があります。 - JavaScriptオブジェクトへの同時アクセスは許可されていません。どのJavaScriptオブジェクトにも一度に複数のスレッドからアクセスすることはできません。
- Javaオブジェクトへの同時アクセスは許可されています。どのJavaオブジェクトにも、JavaまたはJavaScriptのスレッドから同時にアクセスできます。
JavaScriptContext
には、同時に2つ以上のスレッドからアクセスできませんが、適切な同期を使用して複数のスレッドから同じContext
にアクセスし、同時アクセスが発生しないようにすることができます。
例 #
GraalJS 単体テストには、マルチスレッドのJava/JavaScriptのやり取りの例がいくつか含まれています。最も注目すべきものは、次の方法を説明したものです。
- 複数の
Context
オブジェクトを複数のスレッドで実行できる. - 適切な同期を使用すると、1つのスレッドで作成されたJavaScript値を別のスレッドから使用できる.
- 適切な同期を使用すると、
Context
に複数のスレッドからアクセスできる. - JavaScriptからJavaの並行性を有効にできる.
- Javaオブジェクトには、複数のJavaScriptスレッドから同時にアクセスできる.