搜尋

首頁  >  問答  >  主體

java - new了2个Thread,为什么不是交叉打印?

public static void main(String[] args){

        new Thread(new Runnable() {
            @Override
            public void run() {
                for (int i=0; i<10; i++){
                    System.out.print(i+" ");
                }
            }
        }).start();

        new Thread(new Runnable() {
            @Override
            public void run() {
                for (int i=0; i<10; i++){
                    System.out.print(i+" ");
                }
            }
        }).start();
    }

输出结果如下:

0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 
PHPzPHPz2884 天前1580

全部回覆(13)我來回復

  • 阿神

    阿神2017-04-18 10:29:18

    1、控制使得執行緒鎖定的順序一致,可以使用java.util.concurrent.locks套件裡靈活的鎖定
    2、使用java.util.concurrent.atomic套件的原子類

    回覆
    0
  • 巴扎黑

    巴扎黑2017-04-18 10:29:18

    CPU的執行太快了,第一個執行緒很快就執行完了,第二個執行緒估計還沒創建好,把循環的值改到1000試試,應該就能看出來效果了但肯定不會是交叉的,是混亂的

    回覆
    0
  • 高洛峰

    高洛峰2017-04-18 10:29:18

    CPU執行任務是亂序執行,不保證多執行緒之間的同步,如果要保證順序,就需要做同步控制

    回覆
    0
  • 取消回覆