Что такое "runnable" в Java, в условиях непрофессионала? Я студент в области программирования AP в старшей школе, чье задание - заниматься исследованиями или искать других, что такое "runnable" (мы просто попадаем в ООП и еще не трогали потоки).
В простом для понимания объяснении, что такое Runnable в Java?
Ответ 1
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()
в вашем классе, чтобы вы могли получить ошибки. Вот почему вам нужно реализовать интерфейс.
Дополнительно: анонимный тип
Обратите внимание, что вам не нужно определять класс как обычно, вы можете сделать все это inline:
Thread t = new Thread(new Runnable() {
public void run() {
// stuff here
}
});
t.start();
Это похоже на вышесказанное, только вы не создаете другой именованный класс.
Ответ 2
Runnable
- это интерфейс, определенный так:
interface Runnable {
public void run();
}
Чтобы создать класс, который его использует, просто определите класс как (public) class MyRunnable implements Runnable {
Его можно использовать, даже не создавая новую тему. Это в основном ваш основной интерфейс с помощью одного метода, run, который можно назвать.
Если вы создаете новый поток с runnable как его параметр, он вызовет метод запуска в новом потоке.
Следует также отметить, что Threads реализует Runnable
, и это вызывается при создании нового потока (в новом потоке). Реализация по умолчанию просто вызывает любое Runnable, которое вы передали в конструкторе, поэтому вы можете просто сделать new Thread(someRunnable)
без переопределения метода Thread run
.