From 6e85a658ef319cdd39ac6c81c5950d65d00d8f75 Mon Sep 17 00:00:00 2001 From: wtt Date: Mon, 10 Jun 2019 13:37:47 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=A0=E9=99=A4=E4=BA=86=E8=87=AA=E5=B7=B1?= =?UTF-8?q?=E6=B2=A1=E6=9C=89=E5=BC=95=E7=94=A8=E7=9A=84=E5=B7=A5=E5=85=B7?= =?UTF-8?q?=E7=B1=BB=E5=92=8C=E6=B3=A8=E9=87=8A=E4=BA=86sout=E6=B3=A8?= =?UTF-8?q?=E9=87=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../operate/web/utils/FixedThreadPoolUtil.java | 109 --------------------- .../operate/web/worker/SyncV2HistoryWorkerx.java | 4 +- 2 files changed, 2 insertions(+), 111 deletions(-) delete mode 100644 platform-operate-api/src/main/java/com/lyms/platform/operate/web/utils/FixedThreadPoolUtil.java diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/utils/FixedThreadPoolUtil.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/utils/FixedThreadPoolUtil.java deleted file mode 100644 index ad8c203..0000000 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/utils/FixedThreadPoolUtil.java +++ /dev/null @@ -1,109 +0,0 @@ -package com.lyms.platform.operate.web.utils; - -import java.util.ArrayList; -import java.util.List; -import java.util.concurrent.CountDownLatch; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.Executors; - -public class FixedThreadPoolUtil { - - public static void exec(List list) throws InterruptedException { - int count = 30000; //一个线程处理300条数据 - int listSize = list.size(); //数据集合大小 - int runSize = (listSize / count) + 1; //开启的线程数 - if (runSize>10){//线程数最大设置30个,自己定义的 - runSize=10; - count= listSize/runSize; - } - List newlist = null; //存放每个线程的执行数据 - ExecutorService executor = Executors.newFixedThreadPool(runSize); //创建一个线程池,数量和开启线程的数量一样 - //创建两个个计数器 - CountDownLatch begin = new CountDownLatch(1); - CountDownLatch end = new CountDownLatch(runSize); - //循环创建线程 - for (int i = 0; i < runSize; i++) { - //计算每个线程执行的数据 - if ((i + 1) == runSize) { - int startIndex = (i * count); - int endIndex = list.size(); - newlist = list.subList(startIndex, endIndex); - } else { - int startIndex = (i * count); - int endIndex = (i + 1) * count; - newlist = list.subList(startIndex, endIndex); - } - //线程类 - MyThread mythead = new MyThread(newlist, begin, end); - //这里执行线程的方式是调用线程池里的executor.execute(mythead)方法。 - executor.execute(mythead); - } - - begin.countDown(); - end.await(); - //执行完关闭线程池 - executor.shutdown(); - } - - //测试 -// public static void main(String[] args) { -// List list = new ArrayList(); -// long start=System.currentTimeMillis(); -// System.out.println("start==" + start); -// Strtest strtest=new Strtest("王明",1); -// //数据越大线程越多 -// for (int i = 0; i < 3000; i++) { -//// list.add("hello" + i); -// list.add(new Strtest(i+"王明",1+i)); -// } -// try { -// FixedThreadPoolUtil.exec(list); -// long end=System.currentTimeMillis(); -// System.out.println("end=="+end); -// System.out.println("end-start="+(end-start)); -// } catch (InterruptedException e) { -// e.printStackTrace(); -// } -// } -} - -class MyThread implements Runnable { - private List list; - private CountDownLatch begin; - private CountDownLatch end; - - //创建个构造函数初始化 list,和其他用到的参数 - public MyThread(List list, CountDownLatch begin, CountDownLatch end) { - this.list = list; - this.begin = begin; - this.end = end; - } - - @Override - public void run() { - try { - for (int i = 0; i < list.size(); i++) { - /* - 2: 具体插入实现在这里写 - */ - //这里还要说一下,,由于在实质项目中,当处理的数据存在等待超时和出错会使线程一直处于等待状态 - //这里只是处理简单的, - //分批 批量插入 -// Thread.sleep(3000); - System.out.println("当前线程名称:"+Thread.currentThread().getName()+"======存储的数据内容:"+i - ); - } - //执行完让线程直接进入等待 - begin.await(); - } catch (InterruptedException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } finally { - //这里要主要了,当一个线程执行完 了计数要减一不然这个线程会被一直挂起 - // ,end.countDown(),这个方法就是直接把计数器减一的 - end.countDown(); - } - } - - -} diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/worker/SyncV2HistoryWorkerx.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/worker/SyncV2HistoryWorkerx.java index e7b2294..6aeaa69 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/worker/SyncV2HistoryWorkerx.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/worker/SyncV2HistoryWorkerx.java @@ -55,12 +55,12 @@ public class SyncV2HistoryWorkerx implements Callable { if (patients != null) { continue; } - //董勤让写死的 + list.setHospitalId("216");//todo list.setBookbuildingDoctor("1000000185");//todo list.setBookbuildingDate(DateUtil.getyyyy_MM_dd(new Date())); p = bookbuildingFacade.addPregnantBookbuilding(list, null, false); - System.out.println("当前线程名称:"+Thread.currentThread().getName()+"===保存好建档_id:"+p.getData()); + //System.out.println("当前线程名称:"+Thread.currentThread().getName()+"===保存好建档_id:"+p.getData()); } return p; } -- 1.8.3.1