一 Java多线程-线程生命周期( 二 )

然后同时开启这四个线程,但结果是无法预料!为什么?因为只有两种可能的流程(要么wait先执行完,要么notify先执行完) , 至于每种流程里面怎么执行的?不知道!不清楚!无法预料!这就是多线程让人困惑的地方和魅力所在 。
而且线程还有一个无赖的行为就是:虽然你有优先级,但我不保证有用!
public class MyThread extends Thread {MyThread(String s) {super(s);}@Overridepublic void run() {for (int i = 0; i <= 10; i++) {System.out.println(getName() + " : " + i);if (i == 5) {Thread.yield();}}}public static void main(String[] args) throws InterruptedException {System.out.println("主线程启动");Thread t1 = new MyThread("t1");Thread t2 = new MyThread("t2");t1.setPriority(Thread.MIN_PRIORITY);t1.start();t2.setPriority(Thread.MAX_PRIORITY);t2.start();t1.join();t2.join();System.out.println("主线程结束");}}这里不管怎么设置t1或者t2的优先级,都没有用 , 运行的结果每次都可能不一样 。
线程的生命周期6类5法算是比较简单的,是基础中的基础 。但是用好很难,关键在于多练多想,多多尝试各种组合 。

推荐阅读