4.5. スレッドの変更点

本セクションでは、スレッドの変更点を説明します。

4.5.1. 非 Eclipse Vert.x スレッドのコンテキストアフィニティー

Vertx.getOrCreateContext() メソッドは、非 Eclipse Vert.x スレッドごとに単一のコンテキストを作成します。非 Eclipse Vert.x スレッドは、コンテキストの初回作成時にコンテキストに関連付けられます。以前のリリースでは、Eclipse Vert.x 以外のスレッドからメソッドが呼び出されるたびに、新しいコンテキストが作成されていました。

new Thread(() -> {
  assertSame(vertx.getOrCreateContext(), vertx.getOrCreateContext());
}).start();

アプリケーションが呼び出しごとに作成される新しいコンテキストに暗黙的に依存しない限り、この変更はアプリケーションに影響を与えません。

以下の例では、各ブロックコードが異なるコンテキストで呼び出されるため、n ブロックが同時に実行されます。

for (int i = 0;i < n;i++) {
  vertx.executeBlocking(block, handler);
}

Eclipse Vert.x 4 で同じ結果を取得するには、コードを更新する必要があります。

for (int i = 0;i < n;i++) {
  vertx.executeBlocking(block, false, handler);
}