这个多线程的程序为什么运行的结果和我想得不一样
本帖最后由 d173220523 于 2019-8-13 23:19 编辑public class Main {
public static void main(String[] args) {
/*
* A[] a = new A; for (int i = 0; i < A.length; i++) a = new A(i);
* a.setPriority(2); a.setPriority(3); a.start(); a.start();
*/
TestThread[] runners = new TestThread;
for (int i = 0; i < 2; i++) {
runners = new TestThread(i);
}
runners.setPriority(2);
runners.setPriority(3);
for (int i = 0; i < 2; i++) {
runners.start();
}
}
}
class TestThread extends Thread {
private int tick = 1, num;
public TestThread(int num) {
this.num = num;
}
public void run() {
while (tick < 40000) {
tick++;
if (tick % 5000 == 0) {
System.out.println("Thread#" + num + ",tick=" + tick);
yield();
}
}
}
}
Thread#0,tick=5000
Thread#1,tick=5000
Thread#0,tick=10000
Thread#0,tick=15000
Thread#1,tick=10000
Thread#0,tick=20000
Thread#1,tick=15000
Thread#0,tick=25000
Thread#1,tick=20000
Thread#0,tick=30000
Thread#1,tick=25000
Thread#0,tick=35000
Thread#1,tick=30000
Thread#0,tick=40000
Thread#1,tick=35000
Thread#1,tick=40000不应该是Thread#1完了才是Thread#0吗?
楼主要实现的是什么功能? 线程的优先级说明在程序中该线程的重要性。系统会根据优先级决定首先使用哪个线程,但这并不意味着优先级低的线程得不到运行,只是它运行的几率比较小而已,
百度线程优先级 指定线程执行顺序{:1_927:} 多线程不是顺序执行的!! 优先级只是概率被运行的概率较大 不是固定顺序 你运行多次 多次结果都不会一样的 线程优化级并不是指定即有效完全由cpu自身决定线程的优先级 优先级高只是说明运行的几率大,不是100% 建议先了解一下操作系统的相关课程
页:
[1]