Creating threads, start() vs run(), the thread life cycle, race conditions, synchronized, volatile, wait/notify and deadlock.