thread.join()應(yīng)該是讓當(dāng)前線程block住,等thread執(zhí)行完之后,再繼續(xù)執(zhí)行 import java.util.Random; public class ThreadTest { public static void main(String[] args) { System.out.println("in " + Thread.currentThread().getName()); long start = System.currentTimeMillis(); CounterThread[] ct = new CounterThread[3]; for (int i = 0; i < ct.length; i++) { ct[i] = new CounterThread(); ct[i].start(); try { ct[i].join(); } catch (InterruptedException e) { e.printStackTrace(); } } long end = System.currentTimeMillis(); System.out.println("join total time = " + (end - start)); int result = 0; for (int j = 0; j < ct.length; j++) { result += ct[j].getResult(); } System.out.println("the result is " + result); } } class CounterThread extends Thread { public CounterThread() { } private int result; public int getResult() { return result; } public void run() { try { int time = (new Random().nextInt() >>> 1) % 5000; Thread.sleep(time); System.out.println(Thread.currentThread().getName() + " is blocked for " + time + "ms"); } catch (InterruptedException ex) { } result = 5; } } 輸出結(jié)果: in main Thread-0 is blocked for 205ms Thread-1 is blocked for 4226ms Thread-2 is blocked for 4469ms join total time = 8906 the result is 15 |
|
來(lái)自: goodwangLib > 《多線程》