Що означає "запустити" на Java, неспеціалістично? Я студент з програмування AP у середній школі, завдання якого - дослідити або розшукати у інших, що таке "керований" (ми тільки вступаємо в ООП, і ще не торкалися тем).
Що означає "запустити" на Java, неспеціалістично? Я студент з програмування AP у середній школі, завдання якого - дослідити або розшукати у інших, що таке "керований" (ми тільки вступаємо в ООП, і ще не торкалися тем).
Відповіді:
Runnable - це, в основному, тип класу (Runnable - це інтерфейс), який можна помістити в потік, описуючи, що потік повинен робити.
Runnable інтерфейс вимагає від класу реалізувати метод 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
методу.
new Thread(() -> System.out.println("hello from other thread")).start();
Runnable
- це інтерфейс, який визначається так:
interface Runnable {
public void run();
}
Щоб створити клас, який його використовує, просто визначте клас як (public) class MyRunnable implements Runnable {
Його можна використовувати, навіть не створюючи нової нитки. Це в основному ваш базовий інтерфейс з одним методом, запуском, який можна викликати.
Якщо ви зробите новий Thread із запущеним параметром, він викличе метод run у новому Thread.
Слід також зазначити, що Threads реалізуються Runnable
, і це викликається при створенні нової Thread (у новому потоці). Реалізація за замовчуванням просто викликає будь-який Runnable, який ви передали в конструкторі, саме тому ви можете просто обійтися, new Thread(someRunnable)
не замінюючи run
метод Thread .
Thread
об’єднання потоків складно, і якщо ви не реалізуєте об’єднання потоків, ви постійно витрачаєте значні витрати на створення нових потоків. Навпаки, просто реалізація Runnable
означає, що ви можете легко використовувати такі речі, як ThreadPoolExecutorService
сторонній пул потоків.