master
Реализация примера ExecutorService.
Рассмотрел механизм работы класса ReentrantLock.
Реализовал класс Deadlock с внутренним классом Friend в котором два синхронизированных метода.
Реализация еще одной задачи, примера ExecutorService.
Изучили методы notify() и wait()
Init commit
Проверили как работает метод isAlive()
Проверили как работает метод join()
Проверили как работает метод setPriority()
Проверили как работает метод sleep()
Создали класс ThreadExample1, он экстендит класс Thread. У него есть конструктор. Этот конструктор принимает имя String name и передает в super. Если мы нажмем на super, то увидим, что этот конструктор в класс Thread передает name. И далее реализован метод run(), в котором мы выводим сообщение, что поток запущен и имя потока, которое мы достаем с помощью this.name (это именно то имя которое мы засетили в конструкторе). Далее в методе мейн мы создаем экземпляры нашего класса ThreadExample1 в которые передаем имена потоков и запускаем потоки, вызвав метод start() на экземплярах данных классов. В результате мы увидим в выводе, что у нас было запущено три потока, причем второй поток запустился первый. Эти потоки уже работаю параллельно, а не последовательно. И мы уже не можем гарантировать, что если мы запустили первый поток сначала, то он и исполнится первый - потоки будут исполнятся в своей очередности.