• Чем процесс отличается от потока?
  • Чем Thread отличается от Runnable? Когда нужно использовать Thread, а когда Runnable?
  • Что такое монитор? Как монитор реализован в java?
  • Что такое синхронизация? Какие способы синхронизации существуют в java?
  • Как работают методы wait(), notify() и notifyAll()?
  • В каких состояниях может находиться поток?
  • Что такое семафор? Как он реализован в Java?
  • Что означает ключевое слово volatile? Почему операции над volatile переменными не атомарны?
  • Для чего нужны Atomic типы данных? Чем отличаются от volatile?
  • Что такое потоки демоны? Для чего они нужны? Как создать поток-демон?
  • Что такое приоритет потока? На что он влияет? Какой приоритет у потоков по умолчанию?
  • Как работает Thread.join()? Для чего он нужен?
  • Чем отличаются методы wait() и sleep(), yield()?
  • Можно ли вызвать start() для одного потока дважды?
  • Как правильно остановить поток? Для чего нужны методы .stop(), .interrupt(), .interrupted(), .isInterrupted()?
  • Чем Runnable отличается от Callable?
  • Что такое FutureTask?
  • Что такое deadlock?
  • Что такое livelock?
  • Что такое race condition?