public void run() { while (true) { try { AsyncTimeout timedOut = awaitTimeout(); // Didn't find a node to interrupt. Try again. if (timedOut == null) continue; // Close the timed out node. timedOut.timedOut(); } catch (InterruptedException ignored) { } } } }