В простом для понимания объяснении, что такое Runnable в Java? [закрытый]


Что такое" runnable " в Java, в терминах непрофессионала? Я студент AP программирования в средней школе, чье задание состоит в том, чтобы делать исследования, или искать у других, что такое "runnable" (мы только входим в ООП, и еще не коснулись темы).

2 68

2 ответа:

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();

Это похоже на описанное выше, только вы не создаете другой именованный класс.

Runnable интерфейс определяется следующим образом:

interface Runnable {
    public void run();
}

Чтобы создать класс, который его использует, просто определите класс как (public) class MyRunnable implements Runnable {

Его можно использовать даже без создания новой нити. Это в основном ваш базовый интерфейс с одним методом, run, который можно вызвать.

Если вы создадите новый поток с параметром runnable, он вызовет метод run в новом потоке.

Следует также отметить, что потоки реализуют Runnable, и это вызывается, когда создается новый поток (в новый поток). Реализация по умолчанию просто вызывает все Runnable, которые вы передали в конструктор, поэтому вы можете просто сделать new Thread(someRunnable), не переопределяя метод Thread'S run.