Java Thread窃議join()圭隈弌潤
扮寂:2011-06-21 BlogJava Allen Yu
恷除壓園殻囑欺阻倖俶勣呟化峇佩議荷恬,将狛阻匯桑孵木,窟?壓麼徨?殻 荷恬嶄join()圭隈頁掲械糞喘拝嗤丼議匯倖圭隈.
枠栖心join()式凪嶷墮(overload)圭隈議傍苧才旗鷹:
join()圭隈:
1 /**
2 * Waits for this thread to die.
3 *
4 * @exception InterruptedException if another thread has interrupted
5 * the current thread. The <i>interrupted status</i> of the
6 * current thread is cleared when this exception is thrown.
7 */
8 public final void join() throws InterruptedException {
9 join(0);
10 }
join(long millis)圭隈:
1 /**
2 * Waits at most <code>millis</code> milliseconds for this thread to
3 * die. A timeout of <code>0</code> means to wait forever.
4 *
5 * @param millis the time to wait in milliseconds.
6 * @exception InterruptedException if another thread has interrupted
7 * the current thread. The <i>interrupted status</i> of the
8 * current thread is cleared when this exception is thrown.
9 */
10 public final synchronized void join(long millis) throws InterruptedException {
11
12 long base = System.currentTimeMillis();
13 long now = 0;
14
15 if (millis < 0) {
16 throw new IllegalArgumentException ("timeout value is negative");
17 }
18
19 if (millis == 0) {
20 while (isAlive()) {
21 wait(0);
22 }
23 } else {
24 while (isAlive()) {
25 long delay = millis - now;
26 if (delay <= 0) {
27 break;
28 }
29 wait(delay);
30 now = System.currentTimeMillis () - base;
31 }
32 }
33 }
Java Thread类的join()方法小结(2)
时间:2011-06-21 BlogJava Allen Yu
join(long millis, int nanos)方法:
1 /**
2 * Waits at most <code>millis</code> milliseconds plus
3 * <code>nanos</code> nanoseconds for this thread to die.
4 *
5 * @param millis the time to wait in milliseconds.
6 * @param nanos 0-999999 ad
|