wal*_*ali 2 java multithreading producer-consumer runnable
我有一个java类
SomeClass implements Runnable
Run Code Online (Sandbox Code Playgroud)
其中有一个方法display().
当我创建这个类的线程时
Thread thread1 = new Thread(new SomeClass());
Run Code Online (Sandbox Code Playgroud)
现在我如何使用线程实例调用display()方法?
kos*_*osa 11
你最终会调用start()上thread1.
SomeClass将覆盖run()反过来需要调用display()方法的方法.
这样当你调用时start(),SomeClass()将调用对象的run方法并执行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;
}
}
Run Code Online (Sandbox Code Playgroud)
更新:
SomeClass sc = new SomeClass()
Thread thread1 = new Thread(sc);
thread1.join();
sc.methodToGetArrayList();
Run Code Online (Sandbox Code Playgroud)
注意:示例是为了说明概念,可能存在语法错误.
如果您不使用join(),正如Andrew所评论的那样,结果可能会有些不一致.
如果要从新线程调用display,则需要在run run方法中.
如果你想从调用线程调用它然后创建一个新对象,将其传递到你的新线程然后从你的下降线程调用显示
SomeClass sc = new SomeClass();
new Thread(sc).start();
sc.display()
Run Code Online (Sandbox Code Playgroud)