Other options: ReentrantLock uses AbstractQueueSynchronizer,
more complex. Same for CountDownLatch
FutureTask - uses Sync as well, ugly interface with
Callable, can't be recycled.
Mina: simple object lock, doesn't extend java.util.concurent.Future