### --- 案例题目
——> 编程创建两个线程,线程一负责打印1 ~ 100之间的所有奇数,
——> 其中线程二负责打印1 ~ 100之间的所有偶数。
——> 在main方法启动上述两个线程同时执行,主线程等待两个线程终止。
package com.yanqi.task18;
public class SubThread1 extends Thread {
@Override
public void run() {
// 打印1 ~ 100之间的所有奇数
for (int i = 1; i <= 100; i += 2) {
System.out.println("子线程一中: i = " + i);
}
}
}
package com.yanqi.task18;
public class SubThread2 extends Thread {
@Override
public void run() {
// 打印1 ~ 100之间的所有偶数
for (int i = 2; i <= 100; i += 2) {
System.out.println("------子线程二中: i = " + i);
}
}
}
package com.yanqi.task18;
public class SubThreadTest {
public static void main(String[] args) {
SubThread1 st1 = new SubThread1();
SubThread2 st2 = new SubThread2();
st1.start();
st2.start();
System.out.println("主线程开始等待...");
try {
st1.join();
st2.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("主线程等待结束!");
}
}
D:\JAVA\jdk-11.0.2\bin\java.exe "-javaagent:D:\IntelliJIDEA\IntelliJ IDEA 2019.3.3\lib\idea_rt.jar=50892:D:\IntelliJIDEA\IntelliJ IDEA 2019.3.3\bin" -Dfile.encoding=UTF-8 -classpath E:\NO.Z.10000——javaproject\NO.H.00001.javase\javase\out\production\javase com.yanqi.task18.SubThreadTest
主线程开始等待...
子线程一中: i = 1
------子线程二中: i = 2
------子线程二中: i = 4
------子线程二中: i = 6
------子线程二中: i = 8
------子线程二中: i = 10
子线程一中: i = 3
------子线程二中: i = 12
子线程一中: i = 5
------子线程二中: i = 14
子线程一中: i = 7
------子线程二中: i = 16
子线程一中: i = 9
------子线程二中: i = 18
子线程一中: i = 11
------子线程二中: i = 20
------子线程二中: i = 22
------子线程二中: i = 24
------子线程二中: i = 26
子线程一中: i = 13
------子线程二中: i = 28
子线程一中: i = 15
------子线程二中: i = 30
子线程一中: i = 17
------子线程二中: i = 32
子线程一中: i = 19
------子线程二中: i = 34
子线程一中: i = 21
------子线程二中: i = 36
子线程一中: i = 23
------子线程二中: i = 38
子线程一中: i = 25
------子线程二中: i = 40
子线程一中: i = 27
------子线程二中: i = 42
子线程一中: i = 29
------子线程二中: i = 44
子线程一中: i = 31
------子线程二中: i = 46
子线程一中: i = 33
------子线程二中: i = 48
子线程一中: i = 35
------子线程二中: i = 50
子线程一中: i = 37
------子线程二中: i = 52
子线程一中: i = 39
子线程一中: i = 41
子线程一中: i = 43
子线程一中: i = 45
子线程一中: i = 47
子线程一中: i = 49
子线程一中: i = 51
子线程一中: i = 53
子线程一中: i = 55
子线程一中: i = 57
子线程一中: i = 59
子线程一中: i = 61
子线程一中: i = 63
子线程一中: i = 65
子线程一中: i = 67
子线程一中: i = 69
子线程一中: i = 71
子线程一中: i = 73
------子线程二中: i = 54
------子线程二中: i = 56
------子线程二中: i = 58
------子线程二中: i = 60
------子线程二中: i = 62
------子线程二中: i = 64
------子线程二中: i = 66
------子线程二中: i = 68
------子线程二中: i = 70
------子线程二中: i = 72
------子线程二中: i = 74
------子线程二中: i = 76
------子线程二中: i = 78
------子线程二中: i = 80
------子线程二中: i = 82
------子线程二中: i = 84
------子线程二中: i = 86
------子线程二中: i = 88
------子线程二中: i = 90
------子线程二中: i = 92
------子线程二中: i = 94
------子线程二中: i = 96
------子线程二中: i = 98
------子线程二中: i = 100
子线程一中: i = 75
子线程一中: i = 77
子线程一中: i = 79
子线程一中: i = 81
子线程一中: i = 83
子线程一中: i = 85
子线程一中: i = 87
子线程一中: i = 89
子线程一中: i = 91
子线程一中: i = 93
子线程一中: i = 95
子线程一中: i = 97
子线程一中: i = 99
主线程等待结束!
Process finished with exit code 0
package com.yanqi.task18;
public class SubRunnable1 implements Runnable {
@Override
public void run() {
// 打印1 ~ 100之间的所有奇数
for (int i = 1; i <= 100; i += 2) {
System.out.println("子线程一中: i = " + i);
}
}
}
package com.yanqi.task18;
public class SubRunnable2 implements Runnable {
@Override
public void run() {
// 打印1 ~ 100之间的所有偶数
for (int i = 2; i <= 100; i += 2) {
System.out.println("------子线程二中: i = " + i);
}
}
}
package com.yanqi.task18;
public class SubRunnableTest {
public static void main(String[] args) {
SubRunnable1 sr1 = new SubRunnable1();
SubRunnable2 sr2 = new SubRunnable2();
Thread t1 = new Thread(sr1);
Thread t2 = new Thread(sr2);
t1.start();
t2.start();
System.out.println("主线程开始等待...");
try {
t1.join();
t2.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("主线程等待结束!");
}
}
D:\JAVA\jdk-11.0.2\bin\java.exe "-javaagent:D:\IntelliJIDEA\IntelliJ IDEA 2019.3.3\lib\idea_rt.jar=50955:D:\IntelliJIDEA\IntelliJ IDEA 2019.3.3\bin" -Dfile.encoding=UTF-8 -classpath E:\NO.Z.10000——javaproject\NO.H.00001.javase\javase\out\production\javase com.yanqi.task18.SubRunnableTest
主线程开始等待...
------子线程二中: i = 2
------子线程二中: i = 4
------子线程二中: i = 6
------子线程二中: i = 8
------子线程二中: i = 10
------子线程二中: i = 12
------子线程二中: i = 14
子线程一中: i = 1
------子线程二中: i = 16
子线程一中: i = 3
------子线程二中: i = 18
子线程一中: i = 5
------子线程二中: i = 20
子线程一中: i = 7
子线程一中: i = 9
子线程一中: i = 11
子线程一中: i = 13
子线程一中: i = 15
子线程一中: i = 17
子线程一中: i = 19
子线程一中: i = 21
子线程一中: i = 23
子线程一中: i = 25
子线程一中: i = 27
子线程一中: i = 29
子线程一中: i = 31
子线程一中: i = 33
子线程一中: i = 35
子线程一中: i = 37
子线程一中: i = 39
------子线程二中: i = 22
------子线程二中: i = 24
------子线程二中: i = 26
------子线程二中: i = 28
------子线程二中: i = 30
------子线程二中: i = 32
------子线程二中: i = 34
------子线程二中: i = 36
------子线程二中: i = 38
------子线程二中: i = 40
------子线程二中: i = 42
------子线程二中: i = 44
------子线程二中: i = 46
------子线程二中: i = 48
------子线程二中: i = 50
------子线程二中: i = 52
------子线程二中: i = 54
------子线程二中: i = 56
------子线程二中: i = 58
------子线程二中: i = 60
------子线程二中: i = 62
------子线程二中: i = 64
------子线程二中: i = 66
------子线程二中: i = 68
------子线程二中: i = 70
------子线程二中: i = 72
------子线程二中: i = 74
------子线程二中: i = 76
------子线程二中: i = 78
------子线程二中: i = 80
------子线程二中: i = 82
------子线程二中: i = 84
------子线程二中: i = 86
------子线程二中: i = 88
------子线程二中: i = 90
------子线程二中: i = 92
------子线程二中: i = 94
------子线程二中: i = 96
------子线程二中: i = 98
------子线程二中: i = 100
子线程一中: i = 41
子线程一中: i = 43
子线程一中: i = 45
子线程一中: i = 47
子线程一中: i = 49
子线程一中: i = 51
子线程一中: i = 53
子线程一中: i = 55
子线程一中: i = 57
子线程一中: i = 59
子线程一中: i = 61
子线程一中: i = 63
子线程一中: i = 65
子线程一中: i = 67
子线程一中: i = 69
子线程一中: i = 71
子线程一中: i = 73
子线程一中: i = 75
子线程一中: i = 77
子线程一中: i = 79
子线程一中: i = 81
子线程一中: i = 83
子线程一中: i = 85
子线程一中: i = 87
子线程一中: i = 89
子线程一中: i = 91
子线程一中: i = 93
子线程一中: i = 95
子线程一中: i = 97
子线程一中: i = 99
主线程等待结束!
Process finished with exit code 0
Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of life.It sinks, and I am ready to depart