线程池
String url;
long startTime = System.currentTimeMillis();
//进行线程安全的加减数值,从0开始
AtomicInteger numberOfThreads = new AtomicInteger();
//线程池
ThreadPoolExecutor executor = new ThreadPoolExecutor(20, 20, 3, TimeUnit.SECONDS, new LinkedBlockingDeque<Runnable>());
try{
//采用BFS的算法:即一层一层,第一层完了,把第一层从前到后一次向他的后部访问,然后removefirst,完了再做,现在就是改成递归。
while((url = UrlList.unVisitedUrlDeQueue())!= null){
//线程池里面存放线程
//去解析这个
executor.execute(new MutCrawler(url));//numberofthreads.get()为获取当前值
while((UrlList.unVisitedIsEmpty() && numberOfThreads.get()!=0) || (numberOfThreads.get() == 20)){
}
if(UrlList.unVisitedIsEmpty()&&numberOfThreads.get()==0){
break;
}
}
}finally{
executor.shutdown();
}
long useTime = System.currentTimeMillis()-startTime;
System.out.println("UseTIME="+useTime);
}
}

浙公网安备 33010602011771号