线程状态
线程方法:
yiled: 让当前线程暂停,并立即进入就绪状态(不是阻塞状态)
package com.wxh.statictest;
/**
* yield:礼让线程(也是线程暂停的一种方式),让出当前执行,立即进入就绪状态,而不会阻塞状态。
* @author Administrator
*
*/
public class yieldTest1 {
public static void main(String[] args) {
MyYield m1 = new MyYield();
new Thread(m1,"a").start();
new Thread(m1,"b").start();
for(int i = 0;i<100;i++) {
if(i%20==0) {
Thread.yield();
System.out.println(Thread.currentThread().getName()+i);
}}
}
}
class MyYield implements Runnable{
@Override
public void run() {
for(int i = 0;i<100;i++) {
System.out.println(Thread.currentThread().getName()+"---->>"+i);
// Thread.yield();
}
}
}
jion(成员方法):合并线程,待此线程执行完毕后,在执行其他线程,其他线程阻塞
买烟的故事:
package com.wxh.statictest;
public class JoinFatherAndSon {
public static void main(String[] args) {
System.out.println("抽烟的故事");
new Thread(new Father()).start();
}
}
class Father extends Thread {
public void run() {
System.out.println("老爸想抽烟啦。。。");
System.out.println("让儿子出去买。。。");
Thread t = new Thread(new Son());
t.start();
try {
t.join(); //father 被阻塞
} catch (InterruptedException e) {
System.out.println("孩子走丢啦,出去找孩子。。。。。");
e.printStackTrace();
}
System.out.println("老爸接过儿子的烟,吧零钱给了孩子");
}
}
class Son extends Thread {
public void run() {
System.out.println("接过老爸手里的钱,出去了");
System.out.println("路过游戏厅,玩了10秒");
for(int i = 0;i<10;i++) {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(i+"秒过去啦。。。。");
}
System.out.println("想起了要买烟,去买了烟回家");
System.out.println("吧烟给了老爸");
}
}