Ключова разлика – Runnable срещу Thread
Програмата в изпълнение е известна като процес. Процесът може да бъде разделен на множество подпроцеси. Например Microsoft Word е процес. В същото време той проверява за правописна грешка и граматика. Това е подпроцес. Тези подпроцеси са известни като нишки. Многопоточността е процес на изпълнение на множество нишки едновременно. Приложенията с нишки могат да бъдат изградени с помощта на различни езици за програмиране. Runnable и Thread са свързани с програмирането на Java. В Java има два метода за създаване на нишка чрез внедряване на Runnable интерфейс или разширяване на класа Thread. При внедряването на Runnable много нишки могат да споделят един и същ обект на нишка, докато в клас Extending Thread всяка нишка има уникален обект, свързан с нея. Това е ключовата разлика между Runnable и Thread.
Какво е Runnable?
Нишка преминава през някои състояния. „Новото“е началото на жизнения цикъл на нишката. След като методът 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(). Преди основната нишка да умре, тя създава и стартира нишка1 и нишка2. Докато основната нишка достигне края на основния метод, три нишки се изпълняват паралелно. Няма определен ред, в който нишките дават изход. След като нишката е стартирана, е трудно да се реши поръчката, която ще изпълнят. Те работят независимо.
Какви са приликите между Runnable и Thread?
И двете се използват за създаване на нишка в Java
Каква е разликата между Runnable и Thread?
Runnable срещу Thread |
|
Runnable е интерфейс в Java за създаване на нишка, която позволява на много нишки да споделят един и същ обект на нишка. | Нишката е клас в Java за създаване на нишка, където всяка нишка има уникален обект, свързан с нея. |
Памет | |
В Runnable множество нишки споделят един и същ обект, така че изискват по-малко памет. | В клас Thread всяка нишка създава уникален обект, следователно изисква повече памет. |
Възможност за разширяване | |
След внедряване на Runnable интерфейс, той може да разшири клас. | Множеството наследявания не се поддържат в Java. След разширяване на клас Thread, той не може да разшири друг клас. |
Поддържаемост на кода | |
Изпълнимият интерфейс прави кода по-лесен за поддръжка. | В клас Thread поддръжката отнема много време. |
Резюме – Runnable срещу Thread
Процесът е разделен на множество подпроцеси за изпълнение на множество задачи едновременно. Тези подпроцеси са известни като нишки. Създаването на нишка може да бъде направено чрез внедряване на Runnable интерфейс или чрез разширяване на Thread Class. Лесно е да разширите класа Thread, но това не е по-добра практика за обектно-ориентирано програмиране. При внедряването на Runnable много нишки могат да споделят един и същ обект на нишка, докато в клас Thread за разширяване всяка нишка има уникален обект, свързан с нея. Това е разликата между Runnable и Thread. В клас Thread създаването на множество обекти може да изразходва повече памет.
Изтеглете PDF на Runnable vs Thread
Можете да изтеглите PDF версия на тази статия и да я използвате за офлайн цели според бележката за цитиране. Моля, изтеглете PDF версията тук Разлика между Runnable и Thread