例子:
ArmyRunnable.java
public class ArmyRunnable implements Runnable {
//volatile保证了线程可以正确的读取其他线程写入的值
volatile boolean keepRunning = true;
@Override
public void run() {
while(keepRunning){
for(int i=0;i<5;i++){
System.out.println(Thread.currentThread().getName()+i);
//让出了处理器时间,下次该谁获取CPU时间还不一定
Thread.yield();
}
}
System.out.println(Thread.currentThread().getName()+"结束");
}
}
KeyPersonThread.java
public class KeyPersonThread extends Thread {
public void run(){
for(int i=0;i<10;i++){
System.out.println(Thread.currentThread().getName()+i);
}
System.out.println(Thread.currentThread().getName()+"结束");
}
}
Stage.java
public class Stage extends Thread {
public void run(){
ArmyRunnable armyTaskOfSuiDynasty = new ArmyRunnable();
ArmyRunnable armyTaskOfRevolt = new ArmyRunnable();
//使用Runnable接口创建线程
Thread armyOfSuiDynasty = new Thread(armyTaskOfSuiDynasty,"A");
Thread armyOfRevolt = new Thread(armyTaskOfRevolt,"B");
//启动线程
armyOfSuiDynasty.start();
armyOfRevolt.start();
//线程休眠
try {
Thread.sleep(50);
} catch (InterruptedException e) {
e.printStackTrace();
}
Thread mrCheng = new KeyPersonThread();
mrCheng.setName("C");
//停止线程
armyTaskOfSuiDynasty.keepRunning = false;
armyTaskOfRevolt.keepRunning = false;
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
mrCheng.start();
//所有线程等待mrCheng线程结束
try {
mrCheng.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
new Stage().start();
}
}