찾다

 >  Q&A  >  본문

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일 전1578

모든 응답(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
  • 취소회신하다