java1.8 stream 並行和序列流
阿新 • • 發佈:2019-01-11
@Test public void t2(){ List<Object> list = Collections.synchronizedList(new ArrayList<>()); for(int i=0;i<10;i++){ list.add(i); } long l1 = System.currentTimeMillis(); List<Integer>b = new ArrayList<>(); list.stream().forEach(p->{ try { Thread.sleep(200); } catch (InterruptedException e) { e.printStackTrace(); } }); long l2 = System.currentTimeMillis(); System.out.println(l2-l1); } }
序列結果2091.
@Test public void t2(){ List<Object> list = Collections.synchronizedList(new ArrayList<>()); for(int i=0;i<10;i++){ list.add(i); } long l1 = System.currentTimeMillis(); List<Integer>b = new ArrayList<>(); list.parallelStream().forEach(p->{ try { Thread.sleep(200); } catch (InterruptedException e) { e.printStackTrace(); } }); long l2 = System.currentTimeMillis(); System.out.println(l2-l1); } }
並行結果是687.
像這種存在有阻塞的情況,非常適合使用並行流遍歷處理,因為是併發操作,所有需要使用執行緒安全的集合.