在转Java的开发过程中,为了提高程序性能,经常会有多线程并行执行的需求,我写了下面的demo程序供大家参考使用,如有更好的实现方案欢迎讨论
public class MyThreadTest { public static void main(String[] args) throws InterruptedException { final List<ThreadSaveOrderStrategy> subOrders = new ArrayList(); PkgOrderStrategy pkgOrderStrategy = new PkgOrderStrategy(); subOrders.add(pkgOrderStrategy); PkgOrderPlusStrategy pkgOrderPlusStrategy = new PkgOrderPlusStrategy(); subOrders.add(pkgOrderPlusStrategy); int threadNum = 2; // 初始化countDown final CountDownLatch threadSignal = new CountDownLatch(threadNum); // 创建固定长度的线程池 ExecutorService executor = Executors.newFixedThreadPool(threadNum); long startTime = System.currentTimeMillis(); for (int i = 0; i < threadNum; i++) { final int finalI = i; Runnable task = new Runnable() { @Override public void run() { try { ActResult at = subOrders.get(finalI).process(); } catch (Exception ex) { } finally { threadSignal.countDown(); } } }; // 执行 executor.execute(task); } threadSignal.await();// 等待所有子线程执行完 executor.shutdown();//固定线程池执行完成后将释放掉资源退出主进程 long endTime = System.currentTimeMillis();//记录结束时间 System.out.println("整体耗时:" + TypeConverter.toString((float) (endTime - startTime))); } }