在查看下面的http://oreilly.com/catalog/expjava/excerpt/index.html教程之后,我就写了。我希望thread_B
能够调用thread_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
}
我只想让thread_B了解thread_A的队列信息。什么是解决这个问题的好方法?
答案 0 :(得分:2)
这样做:
Worker w = new Worker();
thread_A = new Thread(w);
thread_B = new Thread(new Communicator(w));
并更改Communicator
的构造函数以获取Worker
而不是Thread
。
答案 1 :(得分:0)
属性队列不是Thread类的一部分。它是Worker类的一部分吗?
如果是这样,那么代码需要写成类似
的代码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
}
答案 2 :(得分:0)
线程没有方法。类有方法。只需保留对调用方法所需的任何对象引用的引用,并调用它。