1. 程式人生 > 實用技巧 >迴圈中的多執行緒寫法

迴圈中的多執行緒寫法

public void updateCameraFilmingTime() throws Exception {
   // 獲取業務資料list,替換成自己的邏輯就好
   List<Map<String, String>> list = alarmVideoDao.getCameraList();
   ExecutorService service = Executors.newCachedThreadPool();
   CountDownLatch countDown = new CountDownLatch(list.size());
   for(Map<String,String> cameraInfo: list){
      Runnable runnable = new Runnable() {
         @Override
         public void run() {
            // 迴圈內部邏輯,替換成自己的邏輯就好
            List<Map<String, Date>> timeList = alarmVideoDao.getVideoRecodeTime(cameraInfo.get("code"));
            if (timeList.get(0) != null) {
               alarmVideoDao.updateCameraFilmingTime(cameraInfo.get("code"),(Date)timeList.get(0).get("time"));
            }
            countDown.countDown();
         }
      };
      service.execute(runnable);
   }
   try {
      countDown.await();
   } catch (InterruptedException e) {
      e.printStackTrace();
   }
}

  以上屬於自己不會寫多執行緒,抄就行,多執行緒對於我來說比較高深的,只能暫時寫這樣的例子替換,沒有深入探究多執行緒,我之前兩百多萬的資料沒寫多執行緒之前要跑半個小時,改完多執行緒之後只跑了3分鐘,效果很明顯。但是多執行緒應用場景還是去別的博主那邊查一查,不是所有的情況都適合多執行緒的。。。因為耗cpu,自己琢磨琢磨看著辦。。。