1、现在有T1、T2、T3三个线程,你怎样保证T2在T1执行完后执行,T3在T2执行完后执行?

 package com.mianshi.easy;
class JoinDemo implements Runnable{
public void run() {
for(int i=0;i<100;i++){
System.out.println(Thread.currentThread().getName()+"……"+ i);
}
}
} public class JoinMethod { public static void main(String[] args) throws InterruptedException {
JoinDemo jd = new JoinDemo();
Thread T1 = new Thread(jd);
Thread T2 = new Thread(jd);
Thread T3 = new Thread(jd); T1.start();
//当t1拿着执行权把这些数据都打印完了,主线程才恢复到运行中来
T1.join(); T2.start();
T2.join(); T3.start();
T3.join(); }
}

结果:

Thread-0……0
Thread-0……1
Thread-0……2
Thread-0……3
Thread-0……4
Thread-0……5
Thread-0……6
Thread-0……7
Thread-0……8
Thread-0……9
Thread-0……10
Thread-0……11
Thread-0……12
Thread-0……13
Thread-0……14
Thread-0……15
Thread-0……16
Thread-0……17
Thread-0……18
Thread-0……19
Thread-0……20
Thread-0……21
Thread-0……22
Thread-0……23
Thread-0……24
Thread-0……25
Thread-0……26
Thread-0……27
Thread-0……28
Thread-0……29
Thread-0……30
Thread-0……31
Thread-0……32
Thread-0……33
Thread-0……34
Thread-0……35
Thread-0……36
Thread-0……37
Thread-0……38
Thread-0……39
Thread-0……40
Thread-0……41
Thread-0……42
Thread-0……43
Thread-0……44
Thread-0……45
Thread-0……46
Thread-0……47
Thread-0……48
Thread-0……49
Thread-0……50
Thread-0……51
Thread-0……52
Thread-0……53
Thread-0……54
Thread-0……55
Thread-0……56
Thread-0……57
Thread-0……58
Thread-0……59
Thread-0……60
Thread-0……61
Thread-0……62
Thread-0……63
Thread-0……64
Thread-0……65
Thread-0……66
Thread-0……67
Thread-0……68
Thread-0……69
Thread-0……70
Thread-0……71
Thread-0……72
Thread-0……73
Thread-0……74
Thread-0……75
Thread-0……76
Thread-0……77
Thread-0……78
Thread-0……79
Thread-0……80
Thread-0……81
Thread-0……82
Thread-0……83
Thread-0……84
Thread-0……85
Thread-0……86
Thread-0……87
Thread-0……88
Thread-0……89
Thread-0……90
Thread-0……91
Thread-0……92
Thread-0……93
Thread-0……94
Thread-0……95
Thread-0……96
Thread-0……97
Thread-0……98
Thread-0……99
Thread-1……0
Thread-1……1
Thread-1……2
Thread-1……3
Thread-1……4
Thread-1……5
Thread-1……6
Thread-1……7
Thread-1……8
Thread-1……9
Thread-1……10
Thread-1……11
Thread-1……12
Thread-1……13
Thread-1……14
Thread-1……15
Thread-1……16
Thread-1……17
Thread-1……18
Thread-1……19
Thread-1……20
Thread-1……21
Thread-1……22
Thread-1……23
Thread-1……24
Thread-1……25
Thread-1……26
Thread-1……27
Thread-1……28
Thread-1……29
Thread-1……30
Thread-1……31
Thread-1……32
Thread-1……33
Thread-1……34
Thread-1……35
Thread-1……36
Thread-1……37
Thread-1……38
Thread-1……39
Thread-1……40
Thread-1……41
Thread-1……42
Thread-1……43
Thread-1……44
Thread-1……45
Thread-1……46
Thread-1……47
Thread-1……48
Thread-1……49
Thread-1……50
Thread-1……51
Thread-1……52
Thread-1……53
Thread-1……54
Thread-1……55
Thread-1……56
Thread-1……57
Thread-1……58
Thread-1……59
Thread-1……60
Thread-1……61
Thread-1……62
Thread-1……63
Thread-1……64
Thread-1……65
Thread-1……66
Thread-1……67
Thread-1……68
Thread-1……69
Thread-1……70
Thread-1……71
Thread-1……72
Thread-1……73
Thread-1……74
Thread-1……75
Thread-1……76
Thread-1……77
Thread-1……78
Thread-1……79
Thread-1……80
Thread-1……81
Thread-1……82
Thread-1……83
Thread-1……84
Thread-1……85
Thread-1……86
Thread-1……87
Thread-1……88
Thread-1……89
Thread-1……90
Thread-1……91
Thread-1……92
Thread-1……93
Thread-1……94
Thread-1……95
Thread-1……96
Thread-1……97
Thread-1……98
Thread-1……99
Thread-2……0
Thread-2……1
Thread-2……2
Thread-2……3
Thread-2……4
Thread-2……5
Thread-2……6
Thread-2……7
Thread-2……8
Thread-2……9
Thread-2……10
Thread-2……11
Thread-2……12
Thread-2……13
Thread-2……14
Thread-2……15
Thread-2……16
Thread-2……17
Thread-2……18
Thread-2……19
Thread-2……20
Thread-2……21
Thread-2……22
Thread-2……23
Thread-2……24
Thread-2……25
Thread-2……26
Thread-2……27
Thread-2……28
Thread-2……29
Thread-2……30
Thread-2……31
Thread-2……32
Thread-2……33
Thread-2……34
Thread-2……35
Thread-2……36
Thread-2……37
Thread-2……38
Thread-2……39
Thread-2……40
Thread-2……41
Thread-2……42
Thread-2……43
Thread-2……44
Thread-2……45
Thread-2……46
Thread-2……47
Thread-2……48
Thread-2……49
Thread-2……50
Thread-2……51
Thread-2……52
Thread-2……53
Thread-2……54
Thread-2……55
Thread-2……56
Thread-2……57
Thread-2……58
Thread-2……59
Thread-2……60
Thread-2……61
Thread-2……62
Thread-2……63
Thread-2……64
Thread-2……65
Thread-2……66
Thread-2……67
Thread-2……68
Thread-2……69
Thread-2……70
Thread-2……71
Thread-2……72
Thread-2……73
Thread-2……74
Thread-2……75
Thread-2……76
Thread-2……77
Thread-2……78
Thread-2……79
Thread-2……80
Thread-2……81
Thread-2……82
Thread-2……83
Thread-2……84
Thread-2……85
Thread-2……86
Thread-2……87
Thread-2……88
Thread-2……89
Thread-2……90
Thread-2……91
Thread-2……92
Thread-2……93
Thread-2……94
Thread-2……95
Thread-2……96
Thread-2……97
Thread-2……98
Thread-2……99

2、练习demo

(1)主线程向下转时,碰到了t1.join(),t1要申请加入到运行中来,就是要CPU执行权。这时CPU执行权在主线程手里,主线程就把CPU执行权给放开,陷入冻结状态。活着的只有t1了,只有当t1拿着执行权把这些数据都打印完了,主线程才恢复到运行中来。

 package com.mianshi.easy;

 class JoinDemo implements Runnable{

     public void run() {
for(int i=0;i<100;i++){
System.out.println(Thread.currentThread().getName()+"……"+ i);
}
}
} /**
* 主线程向下转时,碰到了t1.join(),t1要申请加入到运行中来,就是要CPU执行权。
* 这时候CPU执行权在主线程手里,主线程就把CPU执行权给放开,陷入冻结状态。活着的
* 只有t1了,只有当t1拿着执行权把这些数据都打印完了,主线程才恢复到运行中来。
* */
public class JoinMethod { public static void main(String[] args) throws InterruptedException {
JoinDemo jd = new JoinDemo();
Thread t1 = new Thread(jd);
Thread t2 = new Thread(jd); t1.start(); t1.join(); t2.start(); for(int j =0; j<100; j++){
System.out.println(Thread.currentThread().getName()+"……"+j);
}
}
}

结果:

Thread-0……0
Thread-0……1
Thread-0……2
Thread-0……3
Thread-0……4
Thread-0……5
Thread-0……6
Thread-0……7
Thread-0……8
Thread-0……9
Thread-0……10
Thread-0……11
Thread-0……12
Thread-0……13
Thread-0……14
Thread-0……15
Thread-0……16
Thread-0……17
Thread-0……18
Thread-0……19
Thread-0……20
Thread-0……21
Thread-0……22
Thread-0……23
Thread-0……24
Thread-0……25
Thread-0……26
Thread-0……27
Thread-0……28
Thread-0……29
Thread-0……30
Thread-0……31
Thread-0……32
Thread-0……33
Thread-0……34
Thread-0……35
Thread-0……36
Thread-0……37
Thread-0……38
Thread-0……39
Thread-0……40
Thread-0……41
Thread-0……42
Thread-0……43
Thread-0……44
Thread-0……45
Thread-0……46
Thread-0……47
Thread-0……48
Thread-0……49
Thread-0……50
Thread-0……51
Thread-0……52
Thread-0……53
Thread-0……54
Thread-0……55
Thread-0……56
Thread-0……57
Thread-0……58
Thread-0……59
Thread-0……60
Thread-0……61
Thread-0……62
Thread-0……63
Thread-0……64
Thread-0……65
Thread-0……66
Thread-0……67
Thread-0……68
Thread-0……69
Thread-0……70
Thread-0……71
Thread-0……72
Thread-0……73
Thread-0……74
Thread-0……75
Thread-0……76
Thread-0……77
Thread-0……78
Thread-0……79
Thread-0……80
Thread-0……81
Thread-0……82
Thread-0……83
Thread-0……84
Thread-0……85
Thread-0……86
Thread-0……87
Thread-0……88
Thread-0……89
Thread-0……90
Thread-0……91
Thread-0……92
Thread-0……93
Thread-0……94
Thread-0……95
Thread-0……96
Thread-0……97
Thread-0……98
Thread-0……99
main……0
main……1
main……2
main……3
main……4
main……5
main……6
main……7
main……8
main……9
main……10
main……11
main……12
main……13
main……14
main……15
main……16
main……17
main……18
main……19
main……20
main……21
main……22
main……23
main……24
main……25
main……26
main……27
main……28
main……29
main……30
main……31
main……32
main……33
main……34
main……35
Thread-1……0
main……36
Thread-1……1
main……37
Thread-1……2
main……38
Thread-1……3
main……39
Thread-1……4
main……40
Thread-1……5
main……41
Thread-1……6
Thread-1……7
main……42
Thread-1……8
main……43
Thread-1……9
main……44
Thread-1……10
main……45
Thread-1……11
Thread-1……12
main……46
Thread-1……13
main……47
Thread-1……14
main……48
Thread-1……15
main……49
Thread-1……16
main……50
Thread-1……17
main……51
Thread-1……18
main……52
Thread-1……19
main……53
Thread-1……20
Thread-1……21
Thread-1……22
Thread-1……23
Thread-1……24
Thread-1……25
main……54
main……55
main……56
main……57
Thread-1……26
main……58
Thread-1……27
main……59
Thread-1……28
main……60
Thread-1……29
main……61
Thread-1……30
main……62
Thread-1……31
main……63
Thread-1……32
main……64
Thread-1……33
main……65
Thread-1……34
main……66
Thread-1……35
main……67
Thread-1……36
main……68
Thread-1……37
main……69
Thread-1……38
main……70
Thread-1……39
main……71
Thread-1……40
main……72
Thread-1……41
main……73
Thread-1……42
main……74
Thread-1……43
main……75
Thread-1……44
main……76
Thread-1……45
main……77
Thread-1……46
main……78
Thread-1……47
main……79
Thread-1……48
main……80
Thread-1……49
main……81
Thread-1……50
main……82
Thread-1……51
main……83
Thread-1……52
main……84
Thread-1……53
main……85
Thread-1……54
main……86
Thread-1……55
main……87
Thread-1……56
main……88
Thread-1……57
main……89
Thread-1……58
main……90
Thread-1……59
main……91
Thread-1……60
main……92
Thread-1……61
main……93
Thread-1……62
main……94
Thread-1……63
main……95
Thread-1……64
main……96
Thread-1……65
main……97
Thread-1……66
main……98
Thread-1……67
main……99
Thread-1……68
Thread-1……69
Thread-1……70
Thread-1……71
Thread-1……72
Thread-1……73
Thread-1……74
Thread-1……75
Thread-1……76
Thread-1……77
Thread-1……78
Thread-1……79
Thread-1……80
Thread-1……81
Thread-1……82
Thread-1……83
Thread-1……84
Thread-1……85
Thread-1……86
Thread-1……87
Thread-1……88
Thread-1……89
Thread-1……90
Thread-1……91
Thread-1……92
Thread-1……93
Thread-1……94
Thread-1……95
Thread-1……96
Thread-1……97
Thread-1……98
Thread-1……99

(2)改变顺序,主线程启动了两个子线程A、B时,其中一个子线程A调用了join()方法后,主线程将释放执行权,进入冻结状态。子线程A并不会影响子线程B,两个子线程将会交替执行,直到A线程run()方法执行完,主线程将会重新获得执行权。

 package com.mianshi.easy;

 class JoinDemo implements Runnable{

     public void run() {
for(int i=0;i<200;i++){
System.out.println(Thread.currentThread().getName()+"……"+ i);
}
}
} /**
* 将t1.join()和t2.start()位置互换。主线程开启了t1、t2,这时候CPU执行权还在主线程手里。
* 当主线程碰到了t1.join(),释放执行权,处于冻结状态。活着的t1、t2都具备执行资格,这时候CPU
* 便对t1和t2交替执行。主线程要等到t1结束才能活,至于t2结不结束,与主线程没有丝毫关系。如果t1
* 结束了,t2还没结束,主线程就会和t2抢执行权执行。主线程碰到谁的join,它就等谁。也就是说,谁
* 让它把执行权放出来,它就等谁死。至于谁去抢,它不管。
*
* */
public class JoinMethod { public static void main(String[] args) throws InterruptedException {
JoinDemo jd = new JoinDemo();
Thread t1 = new Thread(jd);
Thread t2 = new Thread(jd); t1.start(); t2.start(); t1.join(); for(int j =0; j<100; j++){
System.out.println(Thread.currentThread().getName()+"……"+j);
}
}
}

结果:

Thread-1……0
Thread-0……0
Thread-0……1
Thread-1……1
Thread-0……2
Thread-1……2
Thread-0……3
Thread-1……3
Thread-0……4
Thread-0……5
Thread-0……6
Thread-0……7
Thread-0……8
Thread-0……9
Thread-1……4
Thread-1……5
Thread-1……6
Thread-1……7
Thread-1……8
Thread-1……9
Thread-1……10
Thread-1……11
Thread-1……12
Thread-0……10
Thread-1……13
Thread-1……14
Thread-1……15
Thread-1……16
Thread-1……17
Thread-1……18
Thread-1……19
Thread-1……20
Thread-1……21
Thread-1……22
Thread-1……23
Thread-1……24
Thread-1……25
Thread-1……26
Thread-0……11
Thread-0……12
Thread-0……13
Thread-0……14
Thread-0……15
Thread-0……16
Thread-0……17
Thread-1……27
Thread-0……18
Thread-1……28
Thread-0……19
Thread-1……29
Thread-0……20
Thread-1……30
Thread-0……21
Thread-1……31
Thread-1……32
Thread-1……33
Thread-1……34
Thread-1……35
Thread-1……36
Thread-1……37
Thread-1……38
Thread-1……39
Thread-1……40
Thread-1……41
Thread-1……42
Thread-1……43
Thread-1……44
Thread-1……45
Thread-1……46
Thread-1……47
Thread-0……22
Thread-1……48
Thread-0……23
Thread-1……49
Thread-0……24
Thread-1……50
Thread-0……25
Thread-1……51
Thread-0……26
Thread-1……52
Thread-0……27
Thread-1……53
Thread-0……28
Thread-1……54
Thread-0……29
Thread-1……55
Thread-0……30
Thread-1……56
Thread-0……31
Thread-1……57
Thread-1……58
Thread-1……59
Thread-1……60
Thread-1……61
Thread-1……62
Thread-1……63
Thread-1……64
Thread-1……65
Thread-1……66
Thread-1……67
Thread-1……68
Thread-1……69
Thread-1……70
Thread-1……71
Thread-0……32
Thread-1……72
Thread-0……33
Thread-1……73
Thread-0……34
Thread-1……74
Thread-0……35
Thread-1……75
Thread-0……36
Thread-1……76
Thread-0……37
Thread-1……77
Thread-0……38
Thread-0……39
Thread-0……40
Thread-0……41
Thread-0……42
Thread-0……43
Thread-1……78
Thread-0……44
Thread-1……79
Thread-0……45
Thread-1……80
Thread-0……46
Thread-1……81
Thread-0……47
Thread-1……82
Thread-0……48
Thread-1……83
Thread-0……49
Thread-1……84
Thread-0……50
Thread-1……85
Thread-0……51
Thread-1……86
Thread-0……52
Thread-1……87
Thread-0……53
Thread-1……88
Thread-0……54
Thread-1……89
Thread-0……55
Thread-1……90
Thread-0……56
Thread-1……91
Thread-0……57
Thread-1……92
Thread-0……58
Thread-1……93
Thread-0……59
Thread-1……94
Thread-0……60
Thread-1……95
Thread-0……61
Thread-1……96
Thread-0……62
Thread-1……97
Thread-0……63
Thread-1……98
Thread-0……64
Thread-1……99
Thread-0……65
Thread-1……100
Thread-0……66
Thread-1……101
Thread-0……67
Thread-1……102
Thread-0……68
Thread-1……103
Thread-0……69
Thread-1……104
Thread-0……70
Thread-1……105
Thread-0……71
Thread-1……106
Thread-0……72
Thread-1……107
Thread-0……73
Thread-1……108
Thread-1……109
Thread-0……74
Thread-1……110
Thread-0……75
Thread-1……111
Thread-0……76
Thread-1……112
Thread-0……77
Thread-1……113
Thread-1……114
Thread-0……78
Thread-1……115
Thread-0……79
Thread-1……116
Thread-0……80
Thread-1……117
Thread-0……81
Thread-1……118
Thread-0……82
Thread-1……119
Thread-0……83
Thread-1……120
Thread-0……84
Thread-1……121
Thread-0……85
Thread-1……122
Thread-0……86
Thread-1……123
Thread-0……87
Thread-1……124
Thread-0……88
Thread-1……125
Thread-0……89
Thread-1……126
Thread-0……90
Thread-1……127
Thread-0……91
Thread-1……128
Thread-0……92
Thread-1……129
Thread-0……93
Thread-1……130
Thread-0……94
Thread-1……131
Thread-0……95
Thread-1……132
Thread-0……96
Thread-1……133
Thread-0……97
Thread-1……134
Thread-0……98
Thread-1……135
Thread-0……99
Thread-1……136
Thread-0……100
Thread-1……137
Thread-0……101
Thread-1……138
Thread-0……102
Thread-1……139
Thread-0……103
Thread-1……140
Thread-0……104
Thread-1……141
Thread-0……105
Thread-1……142
Thread-0……106
Thread-1……143
Thread-0……107
Thread-1……144
Thread-0……108
Thread-1……145
Thread-1……146
Thread-1……147
Thread-0……109
Thread-1……148
Thread-0……110
Thread-1……149
Thread-0……111
Thread-1……150
Thread-0……112
Thread-1……151
Thread-0……113
Thread-1……152
Thread-0……114
Thread-1……153
Thread-0……115
Thread-1……154
Thread-0……116
Thread-1……155
Thread-0……117
Thread-1……156
Thread-0……118
Thread-1……157
Thread-0……119
Thread-1……158
Thread-0……120
Thread-1……159
Thread-0……121
Thread-0……122
Thread-1……160
Thread-0……123
Thread-1……161
Thread-0……124
Thread-1……162
Thread-0……125
Thread-0……126
Thread-0……127
Thread-0……128
Thread-0……129
Thread-0……130
Thread-0……131
Thread-0……132
Thread-0……133
Thread-0……134
Thread-0……135
Thread-0……136
Thread-0……137
Thread-0……138
Thread-0……139
Thread-0……140
Thread-0……141
Thread-0……142
Thread-0……143
Thread-0……144
Thread-0……145
Thread-0……146
Thread-0……147
Thread-0……148
Thread-0……149
Thread-0……150
Thread-0……151
Thread-0……152
Thread-0……153
Thread-0……154
Thread-0……155
Thread-0……156
Thread-0……157
Thread-0……158
Thread-0……159
Thread-0……160
Thread-0……161
Thread-0……162
Thread-0……163
Thread-0……164
Thread-0……165
Thread-0……166
Thread-0……167
Thread-0……168
Thread-0……169
Thread-0……170
Thread-0……171
Thread-0……172
Thread-0……173
Thread-0……174
Thread-0……175
Thread-0……176
Thread-0……177
Thread-0……178
Thread-0……179
Thread-0……180
Thread-0……181
Thread-0……182
Thread-0……183
Thread-0……184
Thread-0……185
Thread-0……186
Thread-0……187
Thread-0……188
Thread-0……189
Thread-0……190
Thread-0……191
Thread-0……192
Thread-0……193
Thread-0……194
Thread-0……195
Thread-0……196
Thread-0……197
Thread-0……198
Thread-0……199
Thread-1……163
Thread-1……164
main……0
main……1
main……2
main……3
main……4
main……5
main……6
main……7
main……8
main……9
main……10
main……11
main……12
main……13
main……14
main……15
main……16
main……17
main……18
main……19
main……20
main……21
main……22
main……23
main……24
main……25
main……26
main……27
main……28
main……29
main……30
main……31
main……32
main……33
main……34
main……35
main……36
main……37
main……38
main……39
main……40
main……41
main……42
main……43
main……44
main……45
main……46
main……47
main……48
main……49
main……50
main……51
main……52
main……53
main……54
main……55
main……56
main……57
main……58
main……59
Thread-1……165
main……60
Thread-1……166
main……61
Thread-1……167
main……62
main……63
main……64
main……65
main……66
main……67
main……68
main……69
main……70
main……71
main……72
main……73
main……74
main……75
main……76
Thread-1……168
main……77
Thread-1……169
main……78
Thread-1……170
main……79
Thread-1……171
main……80
Thread-1……172
main……81
Thread-1……173
main……82
Thread-1……174
main……83
Thread-1……175
main……84
Thread-1……176
main……85
Thread-1……177
main……86
Thread-1……178
main……87
Thread-1……179
main……88
Thread-1……180
main……89
Thread-1……181
main……90
Thread-1……182
main……91
Thread-1……183
main……92
Thread-1……184
main……93
Thread-1……185
main……94
Thread-1……186
main……95
Thread-1……187
main……96
Thread-1……188
main……97
Thread-1……189
main……98
Thread-1……190
main……99
Thread-1……191
Thread-1……192
Thread-1……193
Thread-1……194
Thread-1……195
Thread-1……196
Thread-1……197
Thread-1……198
Thread-1……199

顺便贴下java.lang.Thread中关于join()方法的实现代码:

     /**
* Waits at most {@code millis} milliseconds for this thread to
* die. A timeout of {@code 0} means to wait forever.
*
* <p> This implementation uses a loop of {@code this.wait} calls
* conditioned on {@code this.isAlive}. As a thread terminates the
* {@code this.notifyAll} method is invoked. It is recommended that
* applications not use {@code wait}, {@code notify}, or
* {@code notifyAll} on {@code Thread} instances.
*
* @param millis
* the time to wait in milliseconds
*
* @throws IllegalArgumentException
* if the value of {@code millis} is negative
*
* @throws InterruptedException
* if any thread has interrupted the current thread. The
* <i>interrupted status</i> of the current thread is
* cleared when this exception is thrown.
*/
public final synchronized void join(long millis)
throws InterruptedException {
long base = System.currentTimeMillis();
long now = 0; if (millis < 0) {
throw new IllegalArgumentException("timeout value is negative");
} if (millis == 0) {
while (isAlive()) {
wait(0);
}
} else {
while (isAlive()) {
long delay = millis - now;
if (delay <= 0) {
break;
}
wait(delay);
now = System.currentTimeMillis() - base;
}
}
} /**
* Waits at most {@code millis} milliseconds plus
* {@code nanos} nanoseconds for this thread to die.
*
* <p> This implementation uses a loop of {@code this.wait} calls
* conditioned on {@code this.isAlive}. As a thread terminates the
* {@code this.notifyAll} method is invoked. It is recommended that
* applications not use {@code wait}, {@code notify}, or
* {@code notifyAll} on {@code Thread} instances.
*
* @param millis
* the time to wait in milliseconds
*
* @param nanos
* {@code 0-999999} additional nanoseconds to wait
*
* @throws IllegalArgumentException
* if the value of {@code millis} is negative, or the value
* of {@code nanos} is not in the range {@code 0-999999}
*
* @throws InterruptedException
* if any thread has interrupted the current thread. The
* <i>interrupted status</i> of the current thread is
* cleared when this exception is thrown.
*/
public final synchronized void join(long millis, int nanos)
throws InterruptedException { if (millis < 0) {
throw new IllegalArgumentException("timeout value is negative");
} if (nanos < 0 || nanos > 999999) {
throw new IllegalArgumentException(
"nanosecond timeout value out of range");
} if (nanos >= 500000 || (nanos != 0 && millis == 0)) {
millis++;
} join(millis);
} /**
* Waits for this thread to die.
*
* <p> An invocation of this method behaves in exactly the same
* way as the invocation
*
* <blockquote>
* {@linkplain #join(long) join}{@code (0)}
* </blockquote>
*
* @throws InterruptedException
* if any thread has interrupted the current thread. The
* <i>interrupted status</i> of the current thread is
* cleared when this exception is thrown.
*/
public final void join() throws InterruptedException {
join(0);
}

  

join()方法的更多相关文章

  1. java多线程中关于join方法的使用

    Thread的非静态方法join()让一个线程B"加入"到另外一个线程A的尾部.在A执行完毕之前,B不能工作.例如:         Thread t = new MyThread ...

  2. 【多线程】java多线程 测试例子 详解wait() sleep() notify() start() join()方法 等

    java实现多线程,有两种方法: 1>实现多线程,继承Thread,资源不能共享 2>实现多线程  实现Runnable接口,可以实现资源共享 *wait()方法 在哪个线程中调用 则当前 ...

  3. JAVA join()方法

    转自:http://www.open-open.com/lib/view/open1371741636171.html 一.为什么要用join()方法 在很多情况下,主线程生成并起动了子线程,如果子线 ...

  4. Thread.join()方法

    thread.Join把指定的线程加入到当前线程,可以将两个交替执行的线程合并为顺序执行的线程.比如在线程B中调用了线程A的Join()方法,直到线程A执行完毕后,才会继续执行线程B.t.join() ...

  5. python thread的join方法解释

    python的Thread类中提供了join()方法,使得一个线程可以等待另一个线程执行结束后再继续运行.这个方法还可以设定一个timeout参数,避免无休止的等待.因为两个线程顺序完成,看起来象一个 ...

  6. Java Thread.join()方法

    一.使用方式. join是Thread类的一个方法,启动线程后直接调用,例如: Thread t = new AThread(); t.start(); t.join(); 二.为什么要用join() ...

  7. Java线程中yield与join方法的区别

    长期以来,多线程问题颇为受到面试官的青睐.虽然我个人认为我们当中很少有人能真正获得机会开发复杂的多线程应用(在过去的七年中,我得到了一个机会),但是理解多线程对增加你的信心很有用.之前,我讨论了一个w ...

  8. 简谈Java的join()方法

    join()是Thread类的一个方法.根据jdk文档的定义: public final void join()throws InterruptedException: Waits for this ...

  9. java基础知识回顾之java Thread类学习(十一)--join方法的理解

    以下面例子说明下面的源码:main 线程 和 A线程,A线程是main线程创建并且启动的,main线程优先级比较高,正在执行:这个时候main线程调用A.join()之后,main线程一直等待,直到A ...

随机推荐

  1. HTML5 Web 客户端五种离线存储方式汇总

    最近折腾HTML5游戏需要离线存储功能,便把目前可用的几种HTML5存储方式研究了下,基于HT for Web写了个综合的实例,分别利用了Cookie.WebStorage.IndexedDB以及Fi ...

  2. VMware中网络设置之Bridged

    1.设置linux虚拟机Bridged模式. 2.查找网关地址:点击虚拟机工具栏编辑---Virtual Network Editor,选中VMnet0,然后在Bridged to 下拉框中选择可以本 ...

  3. Android Studio添加PNG图片报错原因

    今天在网上看到一个关于Splash Activity的Android帖子,博主在一通讲解之后也给出了代码.于是果断下载下来了看看怎么实现的.一步步照着流程把这个功能实现了一遍.一切都没有大问题,但是在 ...

  4. JAVA - HashMap,TreeMap迭代

    1.使用for_each循环迭代 public class TestUnit { public static void main(String[] args) { HashMap hashMap=ne ...

  5. 拓扑排序 --- hdu 4948 : Kingdom

    Kingdom Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Sub ...

  6. Linq查询操作之聚合操作(count,max,min,sum,average,aggregate,longcount)

    在Linq中有一些这样的操作,根据集合计算某一单一值,比如集合的最大值,最小值,平均值等等.Linq中包含7种操作,这7种操作被称作聚合操作. 1.Count操作,计算序列中元素的个数,或者计算满足一 ...

  7. serialize()序列化

  8. 【Java每日一题】20161201

    20161130问题解析请点击今日问题下方的"[Java每日一题]20161201"查看 package Dec2016; public class Ques1201 { publ ...

  9. How to throw an error in MySql procedure?

    http://stackoverflow.com/questions/4862911/how-to-throw-an-error-in-mysql-procedure 9down votefavori ...

  10. MVC-自定义过滤器

    APS.NET MVC中的每一个请求,都会分配给相应的控制器和对应的行为方法去处理,而在这些处理的前前后后如果想再加一些额外的逻辑处理.这时候就用到了过滤器. 自定义过滤器: 若要自定义一个过滤器,则 ...