public static final Waiter WAITER = new Waiter(); // First task WAITER.run(); try { // ... } finally { WAITER.done(); } // Second task try { WAITER.check(); } catch (InterruptedException x) { Thread.currentThread().interrupt(); x.printStackTrace(); } // ...