为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

炎炎设计 2019-03-12 14:15:35
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!为什么我的结果只有一。

2 回答

?
ITMISS

TA贡献1871条经验 获得超8个赞

可以用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();

    }

}


查看完整回答
反对 回复 2019-04-17
?
蓝山帝景

TA贡献1843条经验 获得超7个赞

  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()方法只能让同优先级的线程有执行的机会。可能是主线程比子线程优先级高


查看完整回答
反对 回复 2019-04-17

添加回答

代码语言

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号