1.yield():调用此方法的线程,释放当前cpu的执行权
class SubTread extends Thread{
@Override
public void run() {
for(int i=1;i<=100;i++){
System.out.println(Thread.currentThread().getName()+":"+i);
}
}
}
public class TestThread {
public static void main(String[] args) {
SubTread st1 = new SubTread();
st1.setName("子线程1");
st1.start();
Thread.currentThread().setName("==========主线程");
for(int i=1;i<=100;i++){
System.out.println(Thread.currentThread().getName()+":"+i);
if(i % 10 ==0){
Thread.currentThread().yield();
}
}
}
}
结果:
==========主线程:1
子线程1:1
==========主线程:2
子线程1:2
==========主线程:3
子线程1:3
子线程1:4
子线程1:5
子线程1:6
子线程1:7
子线程1:8
子线程1:9
子线程1:10
子线程1:11
==========主线程:4
子线程1:12
子线程1:13
子线程1:14
==========主线程:5
子线程1:15
==========主线程:6
子线程1:16
==========主线程:7
子线程1:17
==========主线程:8
子线程1:18
子线程1:19
==========主线程:9
子线程1:20
==========主线程:10
子线程1:21
子线程1:22
==========主线程:11
子线程1:23
==========主线程:12
子线程1:24
==========主线程:13
子线程1:25
子线程1:26
==========主线程:14
子线程1:27
==========主线程:15
子线程1:28
==========主线程:16
子线程1:29
==========主线程:17
子线程1:30
==========主线程:18
子线程1:31
==========主线程:19
子线程1:32
==========主线程:20
子线程1:33
==========主线程:21
子线程1:34
==========主线程:22
子线程1:35
==========主线程:23
子线程1:36
==========主线程:24
子线程1:37
==========主线程:25
子线程1:38
子线程1:39
子线程1:40
==========主线程:26
==========主线程:27
==========主线程:28
==========主线程:29
==========主线程:30
==========主线程:31
==========主线程:32
==========主线程:33
子线程1:41
子线程1:42
子线程1:43
子线程1:44
子线程1:45
子线程1:46
子线程1:47
子线程1:48
子线程1:49
子线程1:50
==========主线程:34
子线程1:51
==========主线程:35
子线程1:52
==========主线程:36
子线程1:53
==========主线程:37
子线程1:54
==========主线程:38
子线程1:55
子线程1:56
子线程1:57
子线程1:58
子线程1:59
子线程1:60
子线程1:61
子线程1:62
子线程1:63
子线程1:64
子线程1:65
==========主线程:39
子线程1:66
==========主线程:40
子线程1:67
==========主线程:41
子线程1:68
==========主线程:42
子线程1:69
==========主线程:43
子线程1:70
==========主线程:44
==========主线程:45
==========主线程:46
子线程1:71
==========主线程:47
子线程1:72
==========主线程:48
子线程1:73
==========主线程:49
子线程1:74
子线程1:75
子线程1:76
==========主线程:50
子线程1:77
==========主线程:51
子线程1:78
==========主线程:52
子线程1:79
==========主线程:53
子线程1:80
==========主线程:54
子线程1:81
==========主线程:55
子线程1:82
==========主线程:56
子线程1:83
==========主线程:57
子线程1:84
==========主线程:58
子线程1:85
==========主线程:59
==========主线程:60
子线程1:86
==========主线程:61
子线程1:87
==========主线程:62
子线程1:88
子线程1:89
子线程1:90
子线程1:91
子线程1:92
子线程1:93
子线程1:94
子线程1:95
子线程1:96
==========主线程:63
子线程1:97
==========主线程:64
子线程1:98
==========主线程:65
子线程1:99
==========主线程:66
子线程1:100
==========主线程:67
==========主线程:68
==========主线程:69
==========主线程:70
==========主线程:71
==========主线程:72
==========主线程:73
==========主线程:74
==========主线程:75
==========主线程:76
==========主线程:77
==========主线程:78
==========主线程:79
==========主线程:80
==========主线程:81
==========主线程:82
==========主线程:83
==========主线程:84
==========主线程:85
==========主线程:86
==========主线程:87
==========主线程:88
==========主线程:89
==========主线程:90
==========主线程:91
==========主线程:92
==========主线程:93
==========主线程:94
==========主线程:95
==========主线程:96
==========主线程:97
==========主线程:98
==========主线程:99
==========主线程:100
子线程打印从1-100的数字,主线程也打印1-100的数据
在主线程执行过程中当打印的数字为整数时调用yield()方法,让出cpu的执行权,这时主线程和子线程str1都可以争夺cpu的执行权,即我们在结果中可以看到有主线程打印整数后,子线程打印的情况;也有主线程打印整数后,主线程继续打印的情况。
join():在A线程中调用B线程的join()方法,表示当执行到此方法,A线程停止执行,直至B线程执行完毕,A线程再接着join()之后的代码执行
class SubTread extends Thread{
//2.重写Thread里的run方法,方法内实现此子线程要完成的功能
@Override
public void run() {
for(int i=1;i<=100;i++){
System.out.println(Thread.currentThread().getName()+":"+i);
}
}
}
public class TestThread1 {
public static void main(String[] args) {
SubTread st1 = new SubTread();
st1.setName("子线程1");
st1.start();
Thread.currentThread().setName("==========主线程");
for(int i=1;i<=100;i++){
System.out.println(Thread.currentThread().getName()+":"+i);
if(i == 20){
try {
st1.join();
} catch (InterruptedException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
}
}
}
}
结果:
==========主线程:1
==========主线程:2
==========主线程:3
子线程1:1
子线程1:2
子线程1:3
==========主线程:4
子线程1:4
==========主线程:5
子线程1:5
子线程1:6
==========主线程:6
子线程1:7
==========主线程:7
子线程1:8
==========主线程:8
==========主线程:9
==========主线程:10
子线程1:9
==========主线程:11
子线程1:10
子线程1:11
子线程1:12
子线程1:13
子线程1:14
子线程1:15
子线程1:16
子线程1:17
子线程1:18
子线程1:19
子线程1:20
子线程1:21
子线程1:22
子线程1:23
子线程1:24
子线程1:25
子线程1:26
子线程1:27
子线程1:28
子线程1:29
子线程1:30
子线程1:31
子线程1:32
子线程1:33
子线程1:34
子线程1:35
==========主线程:12
==========主线程:13
==========主线程:14
==========主线程:15
==========主线程:16
==========主线程:17
==========主线程:18
==========主线程:19
==========主线程:20
子线程1:36
子线程1:37
子线程1:38
子线程1:39
子线程1:40
子线程1:41
子线程1:42
子线程1:43
子线程1:44
子线程1:45
子线程1:46
子线程1:47
子线程1:48
子线程1:49
子线程1:50
子线程1:51
子线程1:52
子线程1:53
子线程1:54
子线程1:55
子线程1:56
子线程1:57
子线程1:58
子线程1:59
子线程1:60
子线程1:61
子线程1:62
子线程1:63
子线程1:64
子线程1:65
子线程1:66
子线程1:67
子线程1:68
子线程1:69
子线程1:70
子线程1:71
子线程1:72
子线程1:73
子线程1:74
子线程1:75
子线程1:76
子线程1:77
子线程1:78
子线程1:79
子线程1:80
子线程1:81
子线程1:82
子线程1:83
子线程1:84
子线程1:85
子线程1:86
子线程1:87
子线程1:88
子线程1:89
子线程1:90
子线程1:91
子线程1:92
子线程1:93
子线程1:94
子线程1:95
子线程1:96
子线程1:97
子线程1:98
子线程1:99
子线程1:100
==========主线程:21
==========主线程:22
==========主线程:23
==========主线程:24
==========主线程:25
==========主线程:26
==========主线程:27
==========主线程:28
==========主线程:29
==========主线程:30
==========主线程:31
==========主线程:32
==========主线程:33
==========主线程:34
==========主线程:35
==========主线程:36
==========主线程:37
==========主线程:38
==========主线程:39
==========主线程:40
==========主线程:41
==========主线程:42
==========主线程:43
==========主线程:44
==========主线程:45
==========主线程:46
==========主线程:47
==========主线程:48
==========主线程:49
==========主线程:50
==========主线程:51
==========主线程:52
==========主线程:53
==========主线程:54
==========主线程:55
==========主线程:56
==========主线程:57
==========主线程:58
==========主线程:59
==========主线程:60
==========主线程:61
==========主线程:62
==========主线程:63
==========主线程:64
==========主线程:65
==========主线程:66
==========主线程:67
==========主线程:68
==========主线程:69
==========主线程:70
==========主线程:71
==========主线程:72
==========主线程:73
==========主线程:74
==========主线程:75
==========主线程:76
==========主线程:77
==========主线程:78
==========主线程:79
==========主线程:80
==========主线程:81
==========主线程:82
==========主线程:83
==========主线程:84
==========主线程:85
==========主线程:86
==========主线程:87
==========主线程:88
==========主线程:89
==========主线程:90
==========主线程:91
==========主线程:92
==========主线程:93
==========主线程:94
==========主线程:95
==========主线程:96
==========主线程:97
==========主线程:98
==========主线程:99
==========主线程:100
在代码中设置当主线程打印20时调用子线程的join()方法,这时主线程会停止执行,等待子线程执行结束,主线程继续执行。