# `Thread` объект 1. **`sleep()`** - заставляет поток остановить свое выполнение на указанное время. При этом поток не теряет контроль над монитором. 2. **`start()`** - запускает данный поток из текущего потока. - Этот метод вызывает `run()` метод этого же потока. 3. **`run()`** - наследники `Thread` должны перегружать данный метод. Он вызывается при старте потока. 4. **`interrupt()`** - прерывает выпонение потока. - `InterruptedException` - данный поток получит это исключение, если произошло успешное прерывание потока. - `ClosedByInterruptException` - если данный поток был заблокирован I/O операцией, то поток получит это исключение по окончанию прерывания. 5. **`setPriority()`** - изменяет приоритет данного потока. - Минимальный приоритет - 1, максимальный - 10. 6. **`join()`** - заставляет поток ждать не более чем указанное время, чтобы завершиться. - Реализация данного метода использует цикл с вызовом `wait()`, который вызывается пока `isAlive`. После завершения потока вызывается `notifyAll()` метод. - Он создан для того, чтобы приложения не использовали методы `wait()`,`notify`,`notifyAll` методы из `Thread` сущностей, так как это не рекомендованно. - Если не указывать время или указать 0, то поток будет ждать вечно чтобы умереть... пичаль. 7. **`setDaemon()`** - отмечает данный поток как поток-демон или пользовательский поток. - JVM отрубается если все запущенный потоки являются демонами. - Этот метод должен выполняться перед стартом потока. 8. **`yield()`** - указывает планировщику, что текущий поток закончил свое выполнение и готов перейти в пользование процессора. Планировщик однаком может игнорировать это указание. - Использование данного метода редко является уместным. Он может использоваться для дебага или тестирования.