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. 实现在GET请求下调用WCF服务时传递对象(复合类型)参数

    WCF实现RESETFUL架构很容易,说白了,就是使WCF能够响应HTTP请求并返回所需的资源,如果有人不知道如何实现WCF支持HTTP请求的,可参见我之前的文章<实现jquery.ajax及原 ...

  2. 语义化HTML:i、b、em和strong标签

    一.前言 在HTML4.1中i和b作为表象标签分别表示斜体和粗体样式,而强调样式与内容分离的XHTML中则出现样式效果相同的em和strong表义标签,此时我们会建议避免使用i和b标签,应该改用em和 ...

  3. OpenJudge 666:放苹果 // 瞎基本DP

    666:放苹果 总时间限制:  1000ms     内存限制:  65536kB 描述 把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?(用K表示)5,1,1和1 ...

  4. 一个ActionResult中定位到两个视图—<团委项目>

         在使用MVC做项目的时候一般的情况就是一个ActionResult一个视图,这样对应的Return View();就可以找到下面对应的视图,这是根据一个原则,"约定大于配置&quo ...

  5. LeetCode - Populating Next Right Pointers in Each Node

    题目: Given a binary tree struct TreeLinkNode { TreeLinkNode *left; TreeLinkNode *right; TreeLinkNode ...

  6. 【转】C#类似Jquery的html解析类HtmlAgilityPack基础类介绍及运用

    Html Agility Pack下载地址:http://htmlagilitypack.codeplex.com/ Html Agility Pack 源码中的类大概有28个左右,其实不算一个很复杂 ...

  7. js中局部变量必须用var去声明

    js中的变量与其他的脚本语言都是很不一样的,在function中你如果不用var 声明一个变量,那么这个变量将在全局可见,也就相当于创建了全局变量.所以在function中声明变量尽量都是用var来声 ...

  8. Type mismatch: cannot convert from java.sql.PreparedStatement to com.mysql.jdbc.PreparedStatement

    Connection.prepareStatement()函数出错,提示: Type mismatch: cannot convert from java.sql.PreparedStatement ...

  9. 【Java每日一题】20161028

    package Oct2016; public class Ques1028 { public static void main(String[] args){ new B().out(); // 输 ...

  10. ThinkCMF变量输出+使用函数

    ThinkCMF变量输出+使用函数的方式同ThinkPHP. ThinkPHP变量输出: 在模板中输出变量的方法很简单,例如,在控制器中我们给模板变量赋值: $name = 'ThinkPHP'; $ ...