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,自己琢磨琢磨看着办。。。