java - new了2个Thread,为什么不是交叉打印?
PHPz
PHPz 2017-04-18 10:27:18
0
13
1513
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 실행 작업은 순서 없이 실행되므로 여러 스레드 간의 동기화가 보장되지 않습니다. 순서를 보장하려면 동기화 제어가 필요합니다

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿