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的WebGL电信网管3D机房监控应用

    先上段视频,不是在玩游戏哦,是规规矩矩的电信网管企业应用,嗯,全键盘的漫游3D机房: http://www.hightopo.com/guide/guide/core/3d/examples/exam ...

  2. CSS魔法堂:Absolute Positioning就这个样

    前言 当我们以position:absolute之名让元素脱离Normal flow的控制后,以为通过left和top属性值即可让元素得以无限的自由时,却发现还有各种神秘的力量左右着它的来去,于是我们 ...

  3. 开源通信(C#)__

    GitHub中的README文件,使用markdown格式的文件. 下面简单介绍下相关语法: 大标题: =================================== 大标题一般显示工程名,你 ...

  4. 将RichTextBox的内容直接写入数据库:

    将RichTextBox的内容直接写入数据库: private void button1_Click(object sender, EventArgs e) {    System.IO.Memory ...

  5. MVVM-Sidekick 之SendToEventRouterAction使用

    在WP开发中点击列表项跳转到详情页是一个很常用的功能,但是有可能项模板中还有其他的区域,比如点击标题跳转到详情页,点击"赞"图标送一个赞,点击"踩"图标踩一下, ...

  6. PHP多种形式发送邮件

    1. 使用 mail() 函数 没什么好讲的,就是使用系统自带的smtp系统来发送,一般是使用sendmail来发.这个按照各个系统不同而定.使用参考手册. 2. 使用管道的形式 昨天刚测试成功,使用 ...

  7. Linux移植的一般过程

    前一阵子在公司移植Linux2.6到一块ARM11的开发板上,下面粗略讲讲移植Linux的一般过程. 一开始的UBOOT的移植不多说了.UBOOT最后有两种方式进入Linux,一种是使用uImage, ...

  8. 【Java每日一题】20161118

    package Nov2016; public class Ques1118 { public static final int NUM = 10000000; public static void ...

  9. FreeBSD应该装gnome3做桌面

    目前freebsd pkg包管理体系的repo源多了一些,速度快了很多. 仓库中目前的版本为3.14,安装gnome3很简单. pkg install xorg gnome3 echo "e ...

  10. 阿里巴巴笔试整理系列 Session2 中级篇

    1知识点储备-----2笔试题总结-----3面试经验总结 知识点储备 2014年8月29日在线笔试题:20单选(40分钟内完成)+附加题(2道编程+1道问答) 1. 通过算法生成的随机数是“伪随机” ...