Выполняемая программа называется процессом. Процесс можно разделить на несколько подпроцессов. Например, Microsoft Word - это процесс. В то же время он проверяет орфографическую ошибку и грамматику. Это подпроцесс. Эти подпроцессы называются потоками. Многопоточность - это процесс одновременного выполнения нескольких потоков. Потоковые приложения могут быть построены с использованием разных языков программирования. Runnable и Thread связаны с программированием на Java. В Java есть два метода для создания потока путем реализации интерфейса Runnable или расширения класса Thread.. При реализации Runnable многие потоки могут совместно использовать один и тот же объект потока, тогда как в классе Extending Thread каждый поток имеет уникальный объект, связанный с ним.. Это ключевое отличие между Runnable и Thread.
1. Обзор и основные отличия
2. Что такое Runnable
3. Что такое нить
4. Сходства между Runnable и Thread
5. Сравнение бок о бок - Runnable vs Thread в табличной форме
6. Резюме
Поток проходит через некоторые состояния. «Новое» - это начало жизненного цикла потока. После вызова метода start () для нового потока он становится работоспособным. Если планировщик потока выбирает поток, он переходит в рабочее состояние. Поток ожидает состояния, если этот поток ожидает другого потока для выполнения задачи. После того как поток завершает работу, он переходит в состояние завершения.
Поток может быть реализован с использованием интерфейса Runnable. См. Ниже программу.
Рисунок 01: Java-программа для создания потока с использованием интерфейса Runnable
Согласно вышеприведенной программе, класс Runnable Demo реализует интерфейс Runnable. Метод run () находится внутри класса, который реализует интерфейс Runnable. Это точка входа для потока. Логика в методе run (). В основной программе поток создается путем определения объекта, который создается из класса Runnable Demo. Это время t1. Метод start () вызывается с использованием t1.
См. Ниже программу.
Рисунок 02: Java-программа для создания потока для выполнения цикла путем реализации интерфейса Runnable
Согласно приведенному выше примеру, класс Runnable Demo реализует интерфейс Runnable. Логика выполнения с использованием потока записана в методе run (). В основной программе поток создается путем определения объекта, который создается из класса Runnable Demo. Это время t1. Затем метод start () вызывается с использованием t1.
Другой метод создания потока - расширение класса 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 против потока | |
Runnable - это интерфейс в Java для создания потока, который позволяет многим потокам совместно использовать один и тот же объект потока. | Поток - это класс в Java для создания потока, в котором каждый поток имеет уникальный объект, связанный с ним.. |
Память | |
В Runnable несколько потоков совместно используют один и тот же объект, поэтому требуют меньше памяти. | В классе Thread каждый поток создает уникальный объект, поэтому требует больше памяти. |
Расширяя Способность | |
После реализации интерфейса Runnable он может расширять класс. | Множественное наследование не поддерживается в Java. После расширения класса Thread он не может расширять любой другой класс. |
Поддержка кода | |
Runnable интерфейс делает код более понятным. | В классе Thread поддержание занимает много времени. |
Процесс делится на несколько подпроцессов для одновременного выполнения нескольких задач. Эти подпроцессы называются потоками. Создание потока может быть выполнено путем реализации интерфейса Runnable или расширения класса потока. Класс Thread легко расширить, но это не лучшая практика объектно-ориентированного программирования. При реализации Runnable многие потоки могут совместно использовать один и тот же объект потока, в то время как при расширении класса Thread каждый поток имеет уникальный объект, связанный с ним. В этом разница между Runnable и Thread. В классе Thread создание нескольких объектов может занимать больше памяти.
Вы можете скачать PDF версию этой статьи и использовать ее в автономном режиме, как указано в примечании. Пожалуйста, загрузите PDF версию здесь Разница между Runnable и Thread
1.tutorialspoint.com. «Многопоточность Java» Точка, доступная здесь
2.Pramodbablad. «Расширяет поток и реализует работоспособность в Java». Java-концепция дня, 11 ноября 2016 года. Доступно здесь
3. Способы создания потока в многопоточности Java | Базовое руководство по Java | Studytonight. Доступна здесь