https://blog.csdn.net/weixin_44797490/article/details/91006241
java.util.ArrayList importación;
java.util.List importación;
java.util.concurrent.CountDownLatch importación;
java.util.concurrent.ExecutorService importación;
java.util.concurrent.Executors de importación;
public class MultiThreadTest {
void main (String [] args) public static lanza la excepción {
List <Integer> idList = new ArrayList <> ();
for (int i = 0; i <1,000; i ++) {
idList.add (i);
}
Int threadNum = 10;
ExecutorService ExecutorService = Executors.newFixedThreadPool (threadNum);
CountDownLatch countDownLatch = nuevo CountDownLatch (threadNum);
int perSize = idList.size () / threadNum;
for (int i = 0; i <threadNum; i ++) {
Hilo multihilo = nuevo multihilo ();
thread.setIdList (idList.subList (i * perSize, (i + 1) * perSize));
thread.setCountDownLatch (countDownLatch);
executorService.submit (rosca);
}
CountDownLatch.await ();
executorService.shutdown ();
}
}
Clase multi-hilo de rosca se extiende {
Lista privada <Integer> idList;
countDownLatch CountDownLatch privado;
setIdList pública vacío (List <Integer> idList) {
this.idList = idList;
}
Pública setCountDownLatch vacío (CountDownLatch countDownLatch) {
this.countDownLatch = countDownLatch;
}
@Override
public void run () {
try {
Thread.sleep (1000);
System.out.println (this.idList);
} Catch (Exception e) {
e.printStackTrace ();
} Finally {
si (countDownLatch! = Null) {
countDownLatch.countDown ();
}
}
}
}