bugfix> java > 投稿

私はスレッドが同期メソッドを完了するまでキーを放棄するだけだと言っているJavaマルチスレッドチュートリアルを読んでいますが、次のコードを実行すると(約20回):

public class SyncDemo implements Runnable{
    @Override
    public void run() {
        for (int i = 0; i < 10; i++) {
            sync();
        }
    }
    private synchronized void sync() {
        System.out.println(Thread.currentThread().getName());
    }
    public static void main(String[] args) {
        SyncDemo s = new SyncDemo();
        Thread a = new Thread(s, "a");
        Thread b = new Thread(s, "b");
        a.start();
        b.start();
    }
}

a のみを出力しますその後、 b 、現在のスレッドは sync() の後に毎回ロックを解除するため、それらの混合シーケンスを期待しますループ内で実行されますか?したがって、他のスレッドにその名前を印刷する機会を与えますか?