3

我有一个java类

SomeClass implements Runnable

其中有一个方法 display()。

当我创建这个类的线程时

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

现在如何使用线程实例调用 display() 方法?

4

3 回答 3

11

你最终会打电话start()thread1.

SomeClass将覆盖run()方法,而该方法又需要调用display()方法。

这样,当您调用时,将调用对象start()的 run 方法并执行 display() 方法。SomeClass()

例子:

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(),正如 Andrew 所评论的那样,结果可能会不一致。

于 2012-11-13T22:32:09.417 回答
5

如果你想从你的新线程调用 display 那么它需要在你的 run 方法中。

如果你想从调用线程调用它然后创建一个新对象,将它传递给你的新线程,然后从你的下降线程调用 display

SomeClass sc = new SomeClass();
new Thread(sc).start();
sc.display()
于 2012-11-13T22:36:17.143 回答
3

简单委托:

public class SomeClass implements Runnable {

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

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

}
于 2012-11-13T22:33:35.247 回答