java - new了2个Thread,为什么不是交叉打印?
PHPz
PHPz 2017-04-18 10:27:18
0
13
1514
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 
PHPz
PHPz

学习是最好的投资!

全部回覆(13)
阿神

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

巴扎黑

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

小葫芦

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

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板