Какво е "runnable" в Java, казано на лаик? Аз съм студент по AP програмиране в гимназията, чиято задача е да правя изследвания или да търся от другите какво е „runnable“ (ние просто навлизаме в ООП и все още не сме докоснали нишки).
В просто разбираемо обяснение какво е Runnable в Java? [затворено]
Отговори (2)
Runnable е основно тип клас (Runnable е интерфейс), който може да бъде поставен в нишка, описвайки какво трябва да прави нишката.
Runnable Interface изисква от класа да имплементира метода run()
така :
public class MyRunnableTask implements Runnable {
public void run() {
// do stuff here
}
}
И след това го използвайте така:
Thread t = new Thread(new MyRunnableTask());
t.start();
Ако не разполагате с интерфейса Runnable
, класът Thread, който е отговорен за изпълнението на вашите неща в другата нишка, няма да има обещанието да намери метод run()
във вашия клас, така че можете да получите грешки. Ето защо трябва да внедрите интерфейса.
Разширено: Анонимен тип
Имайте предвид, че не е необходимо да дефинирате клас както обикновено, можете да направите всичко това вградено:
Thread t = new Thread(new Runnable() {
public void run() {
// stuff here
}
});
t.start();
Това е подобно на горното, само че не създавате друг клас с име.
run
завърши, след което нишката се затваря. Ако искате една нишка да се изпълнява отново и отново, поставете цикъл в метода run
.
- person opatut; 20.11.2014
new Thread(() -> System.out.println("hello from other thread")).start();
- person Gabe; 16.10.2018
Runnable
е интерфейс, дефиниран така:
interface Runnable {
public void run();
}
За да създадете клас, който го използва, просто дефинирайте класа като (public) class MyRunnable implements Runnable {
Може да се използва дори без да се прави нова тема. Това е основно вашият основен интерфейс с един метод, run, който може да бъде извикан.
Ако направите нова нишка с runnable като параметър, тя ще извика метода за изпълнение в нова нишка.
Трябва също да се отбележи, че Threads имплементират Runnable
и това се извиква, когато се направи новата нишка (в новата нишка). Реализацията по подразбиране просто извиква Runnable, който сте предали в конструктора, поради което можете просто да направите new Thread(someRunnable)
, без да замените run
метода на Thread.
Thread
обединяването на нишки е трудно и ако не внедрите обединяване на нишки, вие носите значителните разходи за създаване на нови нишки през цялото време. За разлика от това, просто внедряването на Runnable
означава, че можете лесно да използвате неща като ThreadPoolExecutorService
или пул от нишки на трета страна.
- person Stephen C; 11.11.2012