찾다

 >  Q&A  >  본문

java线程为什么这样没有输出

 List<String> list = Arrays.asList("a","b","c","d");
 ExecutorService service = Executors.newFixedThreadPool(2);
 service.execute(() -> list.parallelStream().forEach(System.out::println));

这样一段代码什么都没输出,而将parallelStream去掉就可以输出,这是什么机制?谁能解释下

黄舟黄舟2802일 전559

모든 응답(3)나는 대답할 것이다

  • 阿神

    阿神2017-04-18 10:51:08

    parallelStream 메서드가 동시에 실행됩니다. 이는 스레드를 켜서 출력 soout을 실행하는 것과 같습니다.
    출력이 없는 이유는 메인 스레드가 실행을 마쳤고, 이때는 soout이 없기 때문입니다. 코드 끝에 wait를 추가하면 효과를 볼 수 있습니다.

    회신하다
    0
  • 黄舟

    黄舟2017-04-18 10:51:08

    병렬...이 방법은 무엇에 사용되나요?

    회신하다
    0
  • 巴扎黑

    巴扎黑2017-04-18 10:51:08

    2층 답변이 아주 좋습니다
    n개 대신 n+개 스레드를 여는 것과 같습니다

    회신하다
    0
  • 취소회신하다