Прежде всего, я читаю другой вопрос об этом элементе и знаю, как его использовать Thread.currentThread().interrupt();
Но проблема в том, что мне нужна моя бизнес-логика, даже если это исключение произошло. Насколько я понимаю, «InterruptedException» - это ситуация, когда ОС просит мой поток на некоторое время остановить выполнение, и после этого времени поток может продолжить выполнение. Я использую semaphore.acquire()
и хочу повторить попытку «приобрести», если произошло исключение «InterruptedException». Мой код выглядит следующим образом:
private final Semaphore semaphore = new Semaphore(1);
...
private StorageConnection allocateConnection() {
boolean allocated = false;
while( !allocated ){
try {
semaphore.acquire();
allocated = true;
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
}
}
StorageConnection connection = connectionQueue.poll();
// OTHER LOGIC
return connection;
}
Пожалуйста, дайте мне знать, если это правильный способ справиться с этой ситуацией или что мне делать, если это не так?
Заранее спасибо.