java - 怎么调出并发不确定性的效果
PHP中文网
PHP中文网 2017-04-17 17:33:42
0
2
612
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!

为什么我的结果只有一。

PHP中文网
PHP中文网

认证高级PHP讲师

Antworte allen(2)
Peter_Zhu

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

Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage