0
WorkerExecutorエグゼキュータを作成し、2つの長期コードを実行しようとしました。私のコード:実行後のブロッキングコードが1つのスレッドで実行されます
public class BVerticle extends AbstractVerticle {
@Override
public void start() throws Exception {
WorkerExecutor executor = vertx.createSharedWorkerExecutor("worker", 10, 10000);
executor.executeBlocking(future -> {
out.printf("start 1, %s \n", Thread.currentThread().getName());
try {
Thread.sleep(5_000L);
} catch (InterruptedException e) {
e.printStackTrace();
}
future.complete();
}, result -> {
out.printf("finish 2, %s \n", Thread.currentThread().getName());
});
executor.executeBlocking(future -> {
out.printf("start 2, %s \n", Thread.currentThread().getName());
try {
Thread.sleep(5_000L);
} catch (InterruptedException e) {
e.printStackTrace();
}
future.complete();
}, result -> {
out.printf("finish 2, %s \n", Thread.currentThread().getName());
});
}
}
が出力:
start 1, worker-0 start 2, worker-0 finish 2, vert.x-eventloop-thread-1 finish 2, vert.x-eventloop-thread-1
ブロックコードは、結果的にのみ1つのスレッドで実行されるのはなぜ?