recherche

Maison  >  Questions et réponses  >  le corps du texte

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

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中文网2807 Il y a quelques jours603

répondre à tous(2)je répondrai

  • 天蓬老师

    天蓬老师2017-04-17 17:35:42

    Vous pouvez utiliser le mode veille :

    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();
        }
    }

    répondre
    0
  • 伊谢尔伦

    伊谢尔伦2017-04-17 17:35:42

      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();
        }
        
        

    J'ai remplacé le rendement() dans la question par sleep(). La méthode rendement() ne peut donner qu'une chance de s'exécuter aux threads ayant la même priorité. Il se peut que le thread principal ait une priorité plus élevée que le thread enfant

    répondre
    0
  • Annulerrépondre