Когда имеет смысл наследоваться от Thread в Java?

227
01 марта 2017, 19:52

Читая статью о многопоточности в Java, я наткнулся на следующие строки:

Считается, что наследование класса Thread следует применять только тогда, когда действительно необходимо создать «новый вид потока, который должен дополнить функциональность класса java.lang.Thread», и подобное решение применяется при разработке системного ПО, например, серверов приложений или инфраструктур.

В каких случаях может понадобиться дополнять функциональность класса Thread? Хотелось бы увидеть практический пример.

Answer 1

В JavaFx обновление компонентов интерфейса происходит в JavaFx потоке, т.е. в любой момент можно проверить, выполняется ли данный код в JavaFx потоке или нет. Не берусь утверждать, что этот механизм реализован именно через наследование потоков, но его можно было бы реализовать именно так. В случае JavaFx таким образом заранее запрещается разработчикам делать что либо вне JavaFx потока, чтобы предотвратить асинхронное изменение компонентов интерфейса.

Использование собственных потоков хорошо годится для тех случаев, когда вы хотите запретить выполнение определенных задач в каких-то сторонних потоках, при этом наложив на свои потоки дополнительные ограничения и функционал.

Наследовать Thread может быть полезным тогда, когда вы хотите вести учет своих потоков, вы можете создать новый класс потока, который будет регистрировать новые потоки еще на этапе конструктора. Или если вам требуется особый вид синхронизации, при котором потоки не будут запускаться по какому-нибудь событию, например ограничение по числу параллельно работающих потоков.

С другой стороны практически все связанные с потоками задачи можно реализовать не наследуя, а используя существующие инструменты пакета java.util.concurrent. Многопоточное программирование – достаточно сложная задача, потому лучше использовать готовые компоненты и решения не прибегая к написанию собственных.

READ ALSO
Как использовать native packing inno setup 5 в NetBeans

Как использовать native packing inno setup 5 в NetBeans

Здравствуйте, нахожусь в небольшом недоуменииЕсть утилита, Inno Setup 5 Script, для того что бы запаковывать проекты в exe, очень хорошая штука(https://netbeans

295
Безопасное хранение ключей шифрования

Безопасное хранение ключей шифрования

Существует ли в Java под android возможность хранить ключи шифрования безопасным образом, например защищенными паролем?

296
ERROR StatusLogger No log4j2 configuration file found

ERROR StatusLogger No log4j2 configuration file found

Проект Maven с использованием HibernateПри запуске возникают ошибки:

560
Взять котировки с yahoo

Взять котировки с yahoo

Для того, чтобы скачать котировки с yahoo finance достаточно на пайтоне сделать такА как сделать тоже самое на джава?

318