我创建了两个模式:一个启动class X
(其中包含以ExecutorService
开头的线程,将其命名为Es),第二个启动class Y
(其中包含以{开头的线程) {1}})。现在,它们都在ES
内class Z
内启动。但是,Es
也会直接从自身开始一组线程(Z
。
ES
在X类中有很多线程,但有一个人特别感兴趣“:
public class Z {
...
public static void main(String [] args)
{
service=Executors.newFixedThreadPool(xNum);
for(int k=0; k < xNum; k++){
X x=new X(k);
service.submit(x);
}
service=Executors.newFixedThreadPool(yNum);
for(int k=0; k < yNum; k++){
Y y=new Y(k);
service.submit(y);
}
service=Executors.newFixedThreadPool(zNum);
for(int k=0; k < zNum; k++){
directThread dt=new directThread(queue1, queue2, queue3);
service.submit(dt);
}
}
}
在public class X{
...
public void run(){
while(true){
...
service = Executors.newFixedThreadPool(XStuffNum);
for (int i=0; i < SStuffNum; i++) {
service.submit(new FirstClass(blocking1, blocking2, blocking3));
}
}
}
}
课程中认识到Y
。
queue和blocking是BlockingQueues的名称。
所以SecondClass
应该从dt
阻塞中获取数据,将它们放入队列中,然后将它们传递给FirstClass
队列。我的问题是,如何让SecondClass
占用dt
内的队列?
EDIT。问题解决了。在FirsClass
和X
内创建getter就足够了,因此Z
可以Y