调用创建其线程对象后实现runnable的Java类方法

时间:2012-11-13 22:31:07

标签: java multithreading runnable producer-consumer

我有一个java类

SomeClass implements Runnable

其中有一个方法display()。

当我创建这个类的线程时

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

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

3 个答案:

答案 0 :(得分: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;
   }
}

更新

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

注意:示例是为了说明这个概念,可能存在语法错误。

如果你没有使用join(),正如安德鲁评论的那样,结果可能会有不一致。

答案 1 :(得分:5)

如果要从新线程调用display,则需要在run run方法中。

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

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

答案 2 :(得分:3)

简单授权:

public class SomeClass implements Runnable {

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

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

}