Вызвать метод класса Java, который реализует runnable после создания своего объекта потока

У меня есть класс Java

SomeClass implements Runnable

Который имеет метод display().

Когда я создаю поток этого класса

Thread thread1 = new Thread(new SomeClass());

Теперь, как я могу вызвать метод display (), используя экземпляр потока?

3 ответа

Решение

Вы закончите звонить start() на thread1,

SomeClass переопределит run() метод, который в свою очередь нужно вызвать display() метод.

Таким образом, когда вы звоните start()Запустите метод SomeClass() Будет вызван объект и будет выполнен метод display().

Пример:

public class SomeClass implements Runnable {
    private List yourArrayList;
    public void run() {
        display();
    }

    public void display() {
        //Your display method implementation.
    }
   public List methodToGetArrayList()
   {
    return  yourArrayList;
   }
}

Обновить:

SomeClass sc = new SomeClass()
Thread thread1 = new Thread(sc);
thread1.join();
sc.methodToGetArrayList();

ПРИМЕЧАНИЕ. Примером для иллюстрации концепции могут быть синтаксические ошибки.

Если вы не используете join(), как прокомментировал Эндрю, в результатах может быть несогласие.

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

Если вы хотите вызвать его из вызывающего потока, то создайте новый объект, передайте его в новый поток и затем вызовите display из вашего падающего потока

SomeClass sc = new SomeClass();
new Thread(sc).start();
sc.display()

Простое делегирование:

public class SomeClass implements Runnable {

    @Override
    public void run() {
        display();
    }

    public void display() {
        //...
    }

}
Другие вопросы по тегам