Java 如何使用线程';来自另一个线程的方法?

Java 如何使用线程';来自另一个线程的方法?,java,multithreading,Java,Multithreading,看完下面的教程后,我就写了。我希望thread\u B能够调用thread\u A thread_A = new Thread(new Worker()); thread_A.start(); thread_B = new Thread(new Communicator(thread_A)); thread_B.start(); 初始化线程并将其分配给类变量似乎可以正常工作。然而,它似乎不允许我使用thread_A的方法 //in thread_B, Thread worker; publ

看完下面的教程后,我就写了。我希望
thread\u B
能够调用
thread\u A

thread_A = new Thread(new Worker());
thread_A.start();

thread_B = new Thread(new Communicator(thread_A));
thread_B.start();
初始化线程并将其分配给类变量似乎可以正常工作。然而,它似乎不允许我使用thread_A的方法

//in thread_B, 
Thread worker;
public Communicator(Thread worker){
    this.worker = worker;
}
//if I want to call thead_A's method size()
public void run(){
    this.worker.queue.size(); //DOES NOT WORK
}
我只想让线程B知道线程A的队列信息。解决这个问题的好方法是什么?

这样做:

Worker w = new Worker();
thread_A = new Thread(w);
thread_B = new Thread(new Communicator(w));

并将
Communicator
的构造函数更改为使用
工作线程而不是
线程

属性队列不属于线程类。它是工人阶级的一部分吗

如果是这样的话,那么代码需要编写如下内容

worker = new Worker();
thread_A = new Thread(worker);
thread_A.start();

thread_B = new Thread(new Communicator(worker));
thread_B.start();


//in thread_B, 
Worker worker;
public Communicator(Worker worker){
    this.worker = worker;
}

//if I want to call thead_A's method size()
public void run(){
    this.worker.queue.size(); //print out queue size in thread_A
}

线程没有方法。类有方法。只需保留对需要调用该方法的对象引用的引用,然后调用它。

是否要准确解释哪些不起作用?编译错误?运行时错误?没有错误,但不是期望的结果?