Потоки выполнения - Metaller000/javaQA GitHub Wiki

  1. Дайте определение понятию “процесс”.
  2. Дайте определение понятию “поток”.
  3. Дайте определение понятию “синхронизация потоков”.
  4. Как взаимодействуют программы, процессы и потоки?
  5. В каких случаях целесообразно создавать несколько потоков?
  6. Что может произойти если два потока будут выполнять один и тот же код в программе?
  7. Что вы знаете о главном потоке программы?
  8. Какие есть способы создания и запуска потоков?
  9. Какой метод запускает поток на выполнение?
  10. Какой метод описывает действие потока во время выполнения?
  11. Когда поток завершает свое выполнение?
  12. Как синхронизировать метод?
  13. Как принудительно остановить поток?
  14. Дайте определение понятию “поток-демон”.
  15. Как создать поток-демон?
  16. Как получить текущий поток?
  17. Дайте определение понятию “монитор”.
  18. Как приостановить выполнение потока?
  19. В каких состояниях может пребывать поток?
  20. Что является монитором при вызове нестатического и статического метода?
  21. Что является монитором при выполнении участка кода метода?
  22. Какие методы позволяют синхронизировать выполнение потоков?
  23. Какой метод переводит поток в режим ожидания?
  24. Какова функциональность методов notify и notifyAll?
  25. Что позволяет сделать метод join?
  26. Каковы условия вызова метода wait/notify?
  27. Дайте определение понятию “взаимная блокировка”.
  28. Чем отличаются методы interrupt, interrupted, isInterrupted?
  29. В каком случае будет выброшено исключение InterruptedException, какие методы могут его выбросить?
  30. Модификаторы volatile и метод yield().
  31. Пакет java.util.concurrent
  32. Есть некоторый метод, который исполняет операцию i++. Переменная i типа int. Предполагается, что код будет исполнятся в многопоточной среде. Следует ли синхронизировать блок?
  33. Что используется в качестве mutex, если метод объявлен static synchronized? Можно ли создавать новые экземпляры класса, пока выполняется static synchronized метод?
  34. Предположим в методе run возник RuntimeException, который не был пойман. Что случится с потоком? Есть ли способ узнать о том, что Exception произошел (не заключая все тело run в блок try-catch)? Есть ли способ восстановить работу потока после того как это произошло?
  35. Какие стандартные инструменты Java вы бы использовали для реализации пула потоков?
  36. Что такое ThreadGroup и зачем он нужен?
  37. Что такое ThreadPool и зачем он нужен?
  38. Что такое ThreadPoolExecutor и зачем он нужен?
  39. Что такое «атомарные типы» в Java?
  40. Зачем нужен класс ThreadLocal?
  41. Что такое Executor?
  42. Что такое ExecutorService?
  43. Зачем нужен ScheduledExecutorService?

Ответы