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

调用Java类的方法,该类在创建线程对象后实现runnable,java,multithreading,runnable,producer-consumer,Java,Multithreading,Runnable,Producer Consumer,我有一个java类 SomeClass implements Runnable 它有一个display()方法 当我创建这个类的线程时 Thread thread1 = new Thread(new SomeClass()); 现在我如何使用线程实例调用display()方法 您将在thread1上调用start() SomeClass将重写run()方法,该方法反过来需要调用display()方法 这样,当您调用start()时,将调用SomeClass()对象的run方法,并执行disp

我有一个java类

SomeClass implements Runnable
它有一个display()方法

当我创建这个类的线程时

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

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

您将在
thread1
上调用
start()

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();
注意:示例是为了说明该概念,可能存在语法错误

如Andrew所言,如果不使用join(),结果可能不一致。

简单委派:

public class SomeClass implements Runnable {

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

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

}

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

如果要从调用线程调用它,然后创建一个新对象,将其传递到新线程,然后从下降线程调用display

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

调用Run方法并在其中执行循环,但我正在SomeClass中的ArrayList中存储执行期间的所有信息,我需要获取该ArrayList。非常感谢您的支持。瓦利:不客气。享受编码。若答案对你们有帮助,别忘了接受。我在等着接受。他们还需要5分钟来确认我不是垃圾邮件:)…这将导致访问问题。在访问列表之前,需要等待线程完成。最好使用异步方法并传递回调。会调用Run方法并在其中执行循环,但我将在执行期间将所有信息存储在获取该ArrayList所需的SomeClass中的ArrayList中。非常感谢您的支持。我就是想这样。