这仅用于我的学术目的。我们添加到执行程序服务的任务是否真正并行执行。这是我提出这个问题的例子
可运行的课程
public Tasks implement Runnable{
int taskCount;
public Tasks(int count){
this.taskCount = count;
}
public void run(){
System.out.println("In Task :"+taskcount +" run method");
}
}
主要类
Class MyTest {
public static void main(String args[]){
ExecutorService service = Executors.newFixedThreadPool(10);
for(inti=0;i<10;i++){
Tasks taskObj = new Tasks(i);
service.submit(taskObj);
}
service.shutdown();
}
}
只要我将taskObj提交给执行程序,就会调用taskObj run()。 如果我有这样的事情怎么办,
请告诉我
...谢谢V
答案 0 :(得分:0)
如果我理解正确,解决这个问题的一种方法是使用线程障碍。这可能听起来很奇怪,但实际上很容易实现。你只需要一个变量(让它命名为traffic-light)并使每个线程循环。如果你启动了足够多的线程(启动一个新线程可能会花费一些时间),你只需将其更改为绿色,所有线程将同时开始执行。
出于学术目的,我们习惯将原子整数作为计数器(用0初始化)并启动n个线程。每个线程的任务是增加计数器然后循环它直到它达到n。像这样,你将所有线程尽可能平行。
如果您仍想使用线程池系统,则可能必须实现自己的线程系统,线程可以在获取工作之前等待信号。
祝你好运