рассмотрим следующего работника:
public class Worker implements Callable<String> ....
// initialize context
@Override
public String call() {
ZMQ.Socket pullSocket = context.socket(ZMQ.PULL);
pullSocket.connect(HOST_PULL_SOCKET);
while (!Thread.currentThread().isInterrupted() && !context.isClosed()) {
String result = pullSocket.recvStr();
return result;
}
return "test";
}
pullSocket.recvStr()
выбрасывает java.nio.channels.ClosedByInterruptException
при выполнении следующего сценария
ExecutorService service = Executors.newFixedThreadPool(4);
List<Worker> workers = new ArrayList<>();
for(int i = 0: i < 4;i++){
workers.add(new Worker()); // Class where call() is executed
}
String result = service.invokeAny(workers);
.
Как можноЯ избегаю такого рода Исключений или каков предпочтительный способ обработки закрытия сокетов, когда вызывается invokeAny()
?