Создание многопоточности и создание запускаемых

1

Это часть кода, который я использую в качестве примера того, как запускать несколько потоков:

import javax.swing.SwingUtilities;

public class ThreadDem {
    //field
    Runnable doRun;
    //constructor
    public ThreadDem(){
        //instantiates a runnable object
        doRun = new Runnable(){
            //have to override the abstract method run of runnable and am
                        //declaring method here in this block statement
            @Override
            public void run() {
                System.out.println("Hello from thread: " 
                                       + Thread.currentThread());
            }       
        };
    }

    public static void main (String[] args){
        ThreadDem demo = new ThreadDem();
        System.out.println("Hello this is from thread: " +
                     Thread.currentThread());
        //I use the invokelater method to invoke the run method of do run on a
                //seperate thread
        SwingUtilities.invokeLater(demo.doRun);

    }
}

Я более или менее просто взял его из документов на runnable. Однако мне трудно понять, почему он работает так. Я еще новичок в ООП и не понимаю, как я могу создать интерфейс (runnable), и если действительно мой runnable объект не является классом, как я могу определить его метод (run())... может кто-то объяснить для меня простыми словами шаг за шагом, что именно происходит в этом конструкторе, чтобы я мог понять смысл процесса? Спасибо!

Теги:
oop
anonymous-class

2 ответа

0
Лучший ответ

То, что вы создали, называется классом Anonimous. Ссылка содержит официальное руководство, в котором объясняется, что это такое, но в двух словах - вы создали одноразовый класс, реализующий Runnable и созданный экземпляр объекта указанного класса.

В качестве предложения - не пытайтесь решать многопоточность, прежде чем вы поймете основные понятия языка, такие как ООП и грамматика.

  • 0
    Ясно спасибо. Я имею в виду, что код полностью понятен для меня в том, что он делает, я просто не мог понять, как я создавал объект там, не создав отдельный класс, поэтому я очень рад дать название тому, что происходит - я буду перечитайте ссылку спасибо :)
  • 0
    @ user3651925 Создание исполняемого файла для вызова с помощью SwingUtilities является многопоточным аналогом System.out.println("Hello World!"); , Во всяком случае, эти учебники объясняют довольно много, в том числе некоторые аспекты многопоточности. Если вы находите их полезными, не стесняйтесь ответить / принять ответ.
0

В Java-интерфейсах невозможно создать экземпляр, они просто определяют, какой метод должен реализовывать, чтобы реализовать этот интерфейс. Чтобы создать поток в Java, лучше всего использовать

public class ThreadDem extends Runnable (рекомендуется)

или

public class ThreadDem extends Thread.

В этот момент вам необходимо внедрить метод "public void run", который перезаписывает пустой из Runnable. В этот момент вы можете просто вызвать run на любом объекте типа ThreadDem.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню