意外输出Java中的多线程

时间:2016-03-12 18:10:18

标签: java

我正在重新认识Java。我正在做多线程并测试优先级逻辑。我有一个主类和另一个实现runnable的类,

public class Threading {

  public static void main(String[] args) {

        System.out.println("Main priority is: " + Thread.currentThread().getPriority());
        MyRunnable myRunnable = new MyRunnable();
        Thread thread1 = new Thread(myRunnable);
        thread1.setPriority(10);
        thread1.setName("MyRunnable");
        thread1.start();

        for (int i = 0; i < 5; i++) {
            System.out.println("Main Thread !!");
        }

    }
}

实现Runnable的类位于下面,

class MyRunnable implements Runnable {
@Override
public void run() {
    System.out.println("Executing Thread name is: " + Thread.currentThread().getName());
    for (int i = 0; i < 5; i++) {
        System.out.println("Implements Runnable !!");
    }
}
}

如果我的理解是正确的,首先应该完成MyRunnable类中的循环,然后是main方法中的循环,因为我为MyRunnable类设置了更高的优先级10。但是我得到了混合输出,但是有时候打印主线程然后是Implements Runnable。我理解处理器或正在研究的O.S可能对输出产生影响。感谢您的投入。

0 个答案:

没有答案