Вызвать метод класса 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() {
//...
}
}