d173220523 发表于 2019-8-12 17:42

这个多线程的程序为什么运行的结果和我想得不一样

本帖最后由 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吗?

Domado 发表于 2019-8-12 18:26

楼主要实现的是什么功能?

氓之嗤嗤 发表于 2019-8-12 18:36

 线程的优先级说明在程序中该线程的重要性。系统会根据优先级决定首先使用哪个线程,但这并不意味着优先级低的线程得不到运行,只是它运行的几率比较小而已,
百度线程优先级

氓之嗤嗤 发表于 2019-8-12 18:39

指定线程执行顺序{:1_927:}

gunxsword 发表于 2019-8-12 18:43

多线程不是顺序执行的!!

加油 发表于 2019-8-12 18:51

Janem 发表于 2019-8-12 19:10

优先级只是概率被运行的概率较大 不是固定顺序 你运行多次 多次结果都不会一样的

wuchengqun520 发表于 2019-8-12 19:21

线程优化级并不是指定即有效完全由cpu自身决定线程的优先级

lovejun 发表于 2019-8-12 19:51

优先级高只是说明运行的几率大,不是100%

wjw0716 发表于 2019-8-12 20:55

建议先了解一下操作系统的相关课程
页: [1]
查看完整版本: 这个多线程的程序为什么运行的结果和我想得不一样