package com.test; import java.util.ArrayList; import java.util.Iterator; import java.util.List; /** * @author tzq * @date 2019-03-13 16:48 */ public class Test { //公共变量 int count=0; static List<Integer> list = new ArrayList<>(); public static void main(String[] args) throws Exception{ //new一个实现Runnable的类 Test test=new Test(); //创建1个任务 MyRunnable myRunnable1=test.new MyRunnable(); //创建5个线程 for(int i=0;i<99;i++){ Thread t = new Thread(myRunnable1); t.start(); t.join(); } System.out.println("线程结束"); System.out.println(list.size()); long s1=System.nanoTime(); for (Integer i :list){ } System.out.println("foreach程序耗时:"+(System.nanoTime()-s1)+" ms"); long s2=System.nanoTime(); Iterator iter = list.iterator(); while(iter.hasNext()){ Object o = iter.next(); } System.out.println("Iterator程序耗时:"+(System.nanoTime()-s2)+" ms"); long s3=System.nanoTime(); int size = list.size(); for(int i=0;i<size;i++){ Object o= list.get(i); } System.out.println("for程序耗时:"+(System.nanoTime()-s3)+" ms"); long s4=System.nanoTime(); for(int i=0;i<list.size();i++){ Object o= list.get(i); } System.out.println("for程序耗时:"+(System.nanoTime()-s4)+" ms"); long s5=System.nanoTime(); list.stream().forEach(x->{ Object o= x; }); System.out.println("stream程序耗时:"+(System.nanoTime()-s5)+" ms"); } //创建一个实现Runnable的类 class MyRunnable implements Runnable{ public void run() { while(true){ //锁住的是同一对象 synchronized(this){ if(count>=1000000){ break; } list.add(count); System.out.println(Thread.currentThread().getName()+":count:"+(++count)); //测试时,线程更容易切换 Thread.yield(); } } } } }
foreach程序耗时:27658646 ms
Iterator程序耗时:12158150 ms
for程序耗时:7618257 ms
for程序耗时:7031677 ms
stream程序耗时:101515437 ms