多线程样例

来源:互联网 发布:博采网络好不好 编辑:程序博客网 时间:2024/06/06 02:21

   在转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)));    }}