Я новичок в параллельном программировании с помощью java и пытаюсь запустить асинхронно с Callables
. Но код, кажется, блокировать мой поток программки, где Callables
отдается ExecutorService es.invokeAll(tasks)
:Concurrent Execution 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);
}
}
У меня есть некоторые операторы журнала управление потоком программы. Как вы можете видеть, выполнение выполняется до тех пор, пока не будут выполнены две задачи.
2017-01-19 16: 06: 06474 INFO [главная] de.cgh.screwminer.service.measurement.MeasurementService (MeasurementService.java:127) - Submmitting задачи
2017-01 -19 16: 06: 08,477 ОШИБКА [пул-2-нить-2] de.cgh.screwminer.service.measurement.SensorReadService (SensorReadService.java:68) - датчик Drehmoment для чтения-подключения может не открывается java. net.SocketTimeoutException: получение тайм-аута ...
2017-01-19 16: 06: 08,477 ОШИБКА [пул-2-нить-4] de.cgh.screwminer.service.measurement.SensorReadService (SensorReadService.java:68) - датчик Крафт чтения соединение не может быть открыт java.net.SocketTimeoutException: Получение приурочено из ...
2017-01-19 16: 06: 08482 INFO [главная] de.cgh.screwminer.service.measurement.MeasurementService (MeasurementService.java:132) - Задачи, представленные