Ключевая разница - Runnable и Thread
Выполняемая программа называется процессом. Процесс можно разделить на несколько подпроцессов. Например, Microsoft Word - это процесс. В то же время он проверяет орфографические ошибки и грамматику. Это подпроцесс. Эти подпроцессы известны как потоки. Многопоточность - это процесс одновременного выполнения нескольких потоков. Потоковые приложения могут быть созданы с использованием разных языков программирования. Runnable и Thread связаны с программированием на Java. В Java есть два метода создания потока путем реализации интерфейса Runnable или расширения класса Thread. При реализации Runnable многие потоки могут совместно использовать один и тот же объект потока, в то время как в классе Extensioning Thread каждый поток имеет связанный с ним уникальный объект. В этом ключевое отличие Runnable от Thread.
Что такое Runnable?
Поток проходит через некоторые состояния. «Новый» - это начало жизненного цикла потока. После того как метод start() вызывает новый поток, он становится работоспособным. Если планировщик потоков выбирает поток, он переходит в состояние выполнения. Поток ожидает состояния, если этот поток ожидает выполнения задачи другим потоком. После завершения работы поток переходит в состояние завершения.
Поток можно реализовать с помощью интерфейса Runnable. См. приведенную ниже программу.
Рисунок 01: Программа Java для создания потока с использованием интерфейса Runnable
Согласно приведенной выше программе, класс Runnable Demo реализует интерфейс Runnable. Метод run() находится внутри класса, реализующего интерфейс Runnable. Это точка входа в поток. Логика в методе run(). В основной программе поток создается путем определения объекта, созданного из класса Runnable Demo. Это т1. Метод start() вызывается с использованием t1.
См. приведенную ниже программу.
Рисунок 02: Программа Java для создания потока для выполнения цикла путем реализации интерфейса Runnable
Согласно приведенному выше примеру, класс Runnable Demo реализует интерфейс Runnable. Логика выполнения с использованием потока записывается в методе run(). В основной программе поток создается путем определения объекта, созданного из класса Runnable Demo. Это т1. Затем вызывается метод start() с использованием t1.
Что такое Thread?
Другой метод создания потока - расширение класса Thread. Он состоит из трех шагов. Во-первых, объявить класс как расширение класса Thread. После этого следует написать метод run(). Он имеет последовательность шагов, которые должен выполнить поток. Наконец, создается объект потока, и вызывается метод start(), чтобы инициировать выполнение потока. См. приведенную ниже программу.
Рисунок 03: Java-программа, расширяющая класс Thread
Согласно приведенной выше программе, класс MyThread расширяет класс Thread. Он переопределяет метод запуска. Метод run() содержит логику, которая должна выполняться потоком. Это точка входа в поток. Затем создается объект потока. Это нить1. Поток запускается с помощью метода start(). Он выполнит вызов метода run().
Пример программы из двух классов, расширяющих класс Thread, выглядит следующим образом.
Рисунок 04: Java-программа с двумя классами, расширяющими класс Thread
Согласно приведенной выше программе, классы A и B расширяют класс Thread. Оба класса имеют свою реализацию метода run(). Основной поток выполняет метод main(). Прежде чем основной поток умрет, он создает и запускает потоки thread1 и thread2. К тому времени, когда основной поток достигает конца основного метода, три потока выполняются параллельно. Нет определенного порядка, в котором потоки выдают выходные данные. Как только поток запущен, трудно решить, в каком порядке они будут выполняться. Они работают независимо.
Каковы сходства между Runnable и Thread?
Оба используются для создания потока в Java
В чем разница между Runnable и Thread?
Runnable vs Thread |
|
Runnable - это интерфейс в Java для создания потока, который позволяет нескольким потокам совместно использовать один и тот же объект потока. | The thread - это класс в Java для создания потока, в котором каждый поток имеет связанный с ним уникальный объект. |
Память | |
В Runnable несколько потоков совместно используют один и тот же объект, поэтому требуется меньше памяти. | В классе Thread каждый поток создает уникальный объект, поэтому требует больше памяти. |
Расширение возможностей | |
После реализации интерфейса Runnable он может расширять класс. | Множественное наследование не поддерживается в Java. После расширения класса Thread он не может расширять какой-либо другой класс. |
Сопровождение кода | |
Работоспособный интерфейс упрощает сопровождение кода. | В классе Thread обслуживание занимает много времени. |
Сводка – Runnable vs Thread
Процесс разделен на несколько подпроцессов для одновременного выполнения нескольких задач. Эти подпроцессы известны как потоки. Создание экземпляра потока может быть выполнено путем реализации интерфейса Runnable или путем расширения класса Thread. Класс Thread легко расширить, но это не лучшая практика объектно-ориентированного программирования. При реализации Runnable многие потоки могут совместно использовать один и тот же объект потока, в то время как при расширении класса Thread каждый поток имеет связанный с ним уникальный объект. В этом разница между Runnable и Thread. В классе Thread создание нескольких объектов может потреблять больше памяти.
Загрузить PDF-файл Runnable vs Thread
Вы можете загрузить PDF-версию этой статьи и использовать ее в автономном режиме в соответствии с примечанием к цитированию. Загрузите PDF-версию здесь. Разница между Runnable и Thread