java - new了2个Thread,为什么不是交叉打印?
PHPz
PHPz 2017-04-18 10:27:18
0
13
1531
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执行任务是乱序执行,不保证多线程之间的同步,如果要保证顺序,需要做同步控制

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板