测试小案例:实现线程的程序执行
计划:(1)应用countdownlatch形式
(2)应用thread与join形式实现
第一种计划
package com.high.current08;import java.util.concurrent.CountDownLatch;public class OrderThread1 extends Thread { private CountDownLatch latch; public OrderThread1(CountDownLatch latch) { this.latch = latch; } @Override public void run() { System.out.println("Thread:" + Thread.currentThread().getName() + " is running"); try { Thread.sleep(5000); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("Thread:" + Thread.currentThread().getName() + " is end"); latch.countDown(); }}
package com.high.current08;import java.util.concurrent.CountDownLatch;public class TestOrder1 { public static void main(String[] args) throws InterruptedException { int number = 3; CountDownLatch latch = new CountDownLatch(number); long t1=System.currentTimeMillis(); for(int i=0;i<3;i++){ OrderThread1 demo = new OrderThread1(latch); demo.start(); } latch.await(); System.out.println("main is end,and it spent "+(System.currentTimeMillis()-t1)+" ms"); }}
第二种计划
package com.high.current08;public class OrderThread2 extends Thread{ @Override public void run(){ System.out.println("Thread:"+Thread.currentThread().getName()+" is running"); try { Thread.sleep(5000); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("Thread:"+Thread.currentThread().getName()+" is end"); }}
package com.high.current08;public class TestOrder2 { public static void main(String[] args) throws InterruptedException { OrderThread2 thread1 = new OrderThread2(); OrderThread2 thread2 = new OrderThread2(); OrderThread2 thread3 = new OrderThread2(); long t1=System.currentTimeMillis(); thread1.start(); thread2.start(); thread3.start(); thread1.join(); thread2.join(); thread3.join(); System.out.println("main is end,and it spent "+(System.currentTimeMillis()-t1)+" ms"); }}
GITHUB