ОПИСАНИЕ
Мир был бы очень простой, если бы мы могли всегда делать только одно дело в один момент. Даже компьютерам и программам хотелось бы так работать. Проблема в том, что нас это не устраивает - нам хочется, чтобы пока программа выполняет какое-то долгое действие мы могли хотя бы двигать мышкой и нажимать кнопочки. А еще, чтобы к серверу могли подключиться много клиентов и работать одновременно, так, чтобы каждому казалось, что он один единственный клиент у этого сервера.
И эту проблему нам, программистам, и приходится решать. Имя этой проблемы — многопоточность, по-английски — multithreading.
Java имеет собственные механизмы поддержки многопоточного выполнения — мьютексы, семафоры, синхронизованные методы и блоки. Свое представление об этом всем должен иметь даже начинающий программист. Именно введением в эту тему мы и займемся на последнем занятии курса Основы Java: multithreading.