刚刚复习到了java线程这一块,感觉还是有点迷糊啊,真是郁闷了, 脑子笨真是没治了!!
public class TestStatus {
public static void main(String[] args) {
YiFanThread yft = new YiFanThread("abcde");
yft.start();
YFThread tf = new YFThread("ddddd");
tf.start();
try {
/*
* 使用了这个方法后只有将该线程执行完成后才会取执行别的线程
*/
tf.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
for(int i=0; i<100; i++) {
System.out.println("main:" + i);
/*
* 这个状态就是使该进程进入可运行状态,但是多核的机器上的表现不会很明显
*/
Thread.yield();
}
}
}
class YiFanThread extends Thread {
public YiFanThread(String name) {
super(name);
}
@Override
public void run() {
for(int i=0; i<10; i++) {
System.out.println("-------" + this.getName() + ":" + i);
try {
/**
* 因为YiFan类使用了sleep对进程进行了休眠操作, 所以现在该线程就会进入阻塞状态
*/
Thread.sleep(10);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
class YFThread extends Thread {
public YFThread(String name) {
super(name);
}
@Override
public void run() {
for(int i=0; i<1000; i++) {
System.out.println("==========" + this.getName() + ":" + i);
}
}
}
java中线程都会有5种状态
创建-> 就绪 -> 运行 -> 阻塞 -> 死亡
创建; 就是线程刚刚new出来还没有start的时候
就绪; 就是线程运行了start还没有正式运行的时候
运行; java虚拟机真正运行我们程序的时候
阻塞; sleep yield 等都会产生这种状态,说明白点就是等待某个条件成熟才会去执行
死亡; 这个不用过多的解释了
个人愚见,不能保证完全正确