threads, producer consumer, interrupting threads, reentrant locks, callable future