0
Ich erstellt WorkerExecutor-Executor und versuchte 2 Langzeite Code auszuführen. Mein Code:Sperrcode wird in dem einen Thread ausgeführt
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());
});
}
}
Ausgabe nach Ausführung:
start 1, worker-0 start 2, worker-0 finish 2, vert.x-eventloop-thread-1 finish 2, vert.x-eventloop-thread-1
Warum Code Blockierung nur in dem einen Faden konsequent ausgeführt wird?