Multithreading ThreadPoolExecutor未并发执行?

Multithreading ThreadPoolExecutor未并发执行?,multithreading,concurrency,threadpool,executorservice,Multithreading,Concurrency,Threadpool,Executorservice,这只是为了我的学术目的。我们添加到executor服务中的任务实际上是并行执行的。这就是我提出这个问题的例子 可运行类 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

这只是为了我的学术目的。我们添加到executor服务中的任务实际上是并行执行的。这就是我提出这个问题的例子

可运行类

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();
}
}
主类

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();
}
}
classmytest{
公共静态void main(字符串参数[]){
ExecutorService=Executors.newFixedThreadPool(10);

对于(inti=0;i如果我理解正确,解决这一问题的一种方法是使用线程屏障。这听起来可能很奇怪,但实际上实现起来相当简单。您只需取一个变量(让它命名为traffic light)并使每个线程在其上循环。如果您启动了足够多的线程(启动一个新线程可能会花费一些时间)您只需将其更改为绿色,所有线程将同时开始执行

出于学术目的,我们使用一个原子整数作为计数器(用0初始化),并启动了n个线程。每个线程的任务是增加计数器,然后在其上循环,直到达到n。这样,所有线程都将尽可能并行

如果您仍然希望使用线程池系统,那么您可能必须实现自己的线程系统,线程可以在获取工作之前等待信号

祝你好运