私はjavaとの並行プログラミングに新しく、Callables
を非同期で開始しようとしています。私はプログラムの流れを制御するいくつかのログ・ステートメントを持っている同時実行Java 8
public void checkSensorConnections(boolean fireEvent) {
List<Callable<Void>> tasks = new ArrayList<>();
getSensors().forEach(sensor -> {
tasks.add(writerService.openWriteConnection(sensor));
tasks.add(readerService.openReadConnection(sensor));
});
try {
LOG.info("Submmitting tasks");
ExecutorService es = Executors.newWorkStealingPool();
es.invokeAll(tasks);
LOG.info("Tasks submitted");
} catch (InterruptedException e) {
LOG.error("could not open sensor-connections", e);
error(MeasurmentScrewMinerError.OPEN_CONNECTION_ERROR);
}
}
:しかし、コードがCallables
がExecutorServiceのes.invokeAll(tasks)
に与えられている私のプログラムの開発の流れを遮断するようです。あなたが見ることができるように、実行は2つのタスクが実行されるまで待つことです。
2017年1月19日16:06:06474 de.cgh.screwminer.service.measurement.MeasurementService(MeasurementService.java:127)INFO [メイン] - Submmittingタスク
2017から01 -199 16:06:08,477 ERROR [プール2スレッド2] de.cgh.screwminer.service.measurement.SensorReadService (SensorReadService.java:68) - センサDrehmomentの読み取り接続は javaを開けない可能性があります。 net.SocketTimeoutException:受信タイムアウト...
2017-01-19 16:06:08,477(センサリードサービス.java:68) - センサクラフトリード接続は を開けませんでしたjava.net.SocketTimeoutException:Received timedアウト...
2017年1月19日16:06:08482 INFO [メイン] de.cgh.screwminer.service.measurement.MeasurementService (MeasurementService.java:132) -