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

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所评论的那样,结果可能会有些不一致.


RNJ*_*RNJ 5

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

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

SomeClass sc = new SomeClass();
new Thread(sc).start();
sc.display()
Run Code Online (Sandbox Code Playgroud)