常用方法:
- yield:线程的礼让。让出cpu,让其他线程执行,但礼让的时间不确定,所以也不一定礼让成功(一般资源紧张的时候礼让会成功)
- join: 线程的插队。插队的线程一旦插队成功,则肯定先执行完插入的线程所有的任务
案例:
需求:
main线程创建一个子线程,每隔1s输出hello,输出3次,主线程每隔1秒,输出hi,输出3次.要求:两个线程同时执行,当主线程输出1次后,就让子线程运行完毕,主线程再继续,
实现:
package test;
/**
* 演示线程终止
*/
public class Main {
public static void main(String[] args) throws InterruptedException {
T t = new T();
t.start();
for(int i = 1; i <= 5; i++){
Thread.sleep(1000);
System.out.println("hi");
if(i == 1){
//join, 线程插队
t.join();//这里相当于让t 线程先执行完毕
//Thread.yield();//礼让,不一定成功..
}
}
}
}
class T extends Thread{
int count = 0;
@Override
public void run() {
while(true){
System.out.println("hello " + (++count));
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
if(count == 5){
break;
}
}
}
}