然后同时开启这四个线程,但结果是无法预料!为什么?因为只有两种可能的流程(要么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法算是比较简单的,是基础中的基础 。但是用好很难,关键在于多练多想,多多尝试各种组合 。
推荐阅读
- 创建.NET程序Dump的几种姿势
- 一台虚拟机,基于docker搭建大数据HDP集群
- 支持JDK19虚拟线程的web框架,之二:完整开发一个支持虚拟线程的quarkus应用
- 一加8pro屏幕分辨率是多少_一加8pro屏幕分辨率怎么样
- vivox70pro参数及价格_vivox70pro配置多少钱
- 不会抽烟怎么装会抽烟啊(一个不抽烟的男的突然抽烟)
- 7 Java多线程:JUC(上)
- FlinkSql之TableAPI详解
- 一次 Java log4j2 漏洞导致的生产问题
- 一荤一素成语|关于素的成语