Java multi-threading superdetallado

 

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

Supongo que te gusta

Origin www.cnblogs.com/min225016/p/12511253.html
Recomendado
Clasificación