package 线程_175_线程阻塞1_join_yield;
/**
- 1.join合并线程
*/
public class JoinDemo01 extends Thread{
public static void main(String[] args) throws InterruptedException {
JoinDemo01 demo = new JoinDemo01();
Thread t = new Thread(demo);//新生线程
t.start();//启动就绪
//CPU调度运行
for(int i=0;i<10;i++){
//判断
if(5==i){//如果符合条件就执行下面的程序
t.join();//声明异常;如果没有这个,程序执行时可能相互执行;有了这个就需要满足条件后才执行
}
System.out.println("main......"+i);//main方法阻塞了
}
}
@Override
public void run() {
for(int i=0;i<10;i++){
System.out.println("join....."+i);
}
}
}
//------------------------------------------
package 线程_175_线程阻塞1_join_yield;
/**
- 2.yield:暂停线程;暂停自己的线程;是静态方法static
*/
public class YieldDemo01 extends Thread {
public static void main(String[] args) {
YieldDemo01 demo = new YieldDemo01();
Thread t = new Thread(demo);//新生线程
t.start();//启动就绪
for(int i=0;i<10;i++){
//判断
if(i%2==0){//如果符合条件就执行下面的程序
//暂停本线程main;因为是静态方法所以写在哪个暂停体里面就暂停谁
Thread.yield();//因为写在main线程体里面所以暂停main
//暂没暂停那就看CPU了;没有严格意义上的暂停
}
System.out.println("main......"+i);//main方法阻塞了
}
}
@Override
public void run() {
for(int i=0;i<10;i++){
Thread.yield();//如果写在这暂停的是上面的demo和t
System.out.println("yield....."+i);
}
}
}