マルチスレッド

GraalVM上でJavaScriptを実行すると、マルチスレッドがサポートされます。使用状況に応じて、複数のContextオブジェクトまたは複数のWorkerスレッドを使用して並列JavaScriptコードを実行するためのスレッドを使用できます。

JavaとJavaScriptでのマルチスレッド #

マルチスレッドは、Java相互運用性の中でJavaScriptを実行する場合にサポートされます。GraalVMでサポートされるマルチスレッド実行の基本モデルは「共有なし」モデルです。これは、どのJavaScript開発者にも馴染みのあるものです。

  1. 任意の数のJavaScriptContextを作成できますが、一度に1つのスレッドで使用される必要があります。
  2. JavaScriptオブジェクトへの同時アクセスは許可されていません。どのJavaScriptオブジェクトにも一度に複数のスレッドからアクセスすることはできません。
  3. Javaオブジェクトへの同時アクセスは許可されています。どのJavaオブジェクトにも、JavaまたはJavaScriptのスレッドから同時にアクセスできます。

JavaScriptContextには、同時に2つ以上のスレッドからアクセスできませんが、適切な同期を使用して複数のスレッドから同じContextにアクセスし、同時アクセスが発生しないようにすることができます。

#

GraalJS 単体テストには、マルチスレッドのJava/JavaScriptのやり取りの例がいくつか含まれています。最も注目すべきものは、次の方法を説明したものです。

  1. 複数のContextオブジェクトを複数のスレッドで実行できる.
  2. 適切な同期を使用すると、1つのスレッドで作成されたJavaScript値を別のスレッドから使用できる.
  3. 適切な同期を使用すると、Contextに複数のスレッドからアクセスできる.
  4. JavaScriptからJavaの並行性を有効にできる.
  5. Javaオブジェクトには、複数のJavaScriptスレッドから同時にアクセスできる.

当社との接続