猿问

怎么调出并发不确定性的效果

class HelloWorld {

    public static void main(String[] args) throws InterruptedException {

        Thread myThread = new Thread() {

            public void run(){

                System.out.println("Hello from new Thread!");

            }

        };

        

        myThread.start();

        Thread.yield();

        

        System.out.println("Hello from main Thread!");

        myThread.join();

    }

}

《七周七并发模型》

作者说结果可能是


结果可能一


Hello from main Thread!

Hello from new Thread!

结果可能二


Hello from new Thread!

Hello from main Thread!

为什么我的结果只有一。


炎炎设计
浏览 382回答 2
2回答

ITMISS

可以用sleep:class HelloWorld {    public static void main(String[] args) throws InterruptedException {        Thread myThread = new Thread() {            public void run(){                System.out.println("Hello from new Thread!");            }        };                myThread.start();        Thread.yield();        Thread.sleep(100);        System.out.println("Hello from main Thread!");        myThread.join();    }}

蓝山帝景

  public static void main(String[] args) throws InterruptedException {        Thread myThread = new Thread(){            public void run(){                try {                    Thread.sleep(500);                } catch (InterruptedException e) {                    e.printStackTrace();                }                System.out.println("Hello from new Thread!");            }        };                myThread.start();        Thread.sleep(500);                System.out.println("Hello from main Thread!");        myThread.join();    }        我把题主的yield()换成了sleep(),yield()方法只能让同优先级的线程有执行的机会。可能是主线程比子线程优先级高
随时随地看视频慕课网APP

相关分类

Java
我要回答