import com.fourinone.Contractor; import com.fourinone.WareHouse; import com.fourinone.WorkerLocal; import java.util.HashMap; import java.util.Iterator; import java.util.Date; public class WordcountCT extends Contractor { public WareHouse giveTask(WareHouse inhouse) { WorkerLocal[] wks = getWaitingWorkers("wordcount"); System.out.println("wks.length:"+wks.length); WareHouse[] hmarr = doTaskBatch(wks, inhouse); HashMap<String,Integer> wordcount = new HashMap<String,Integer>(); for(WareHouse hm:hmarr) { HashMap<String,Integer> wordhm = (HashMap<String,Integer>)hm.get("word"); for(Iterator<String> iter=wordhm.keySet().iterator();iter.hasNext();){ String curword = iter.next(); if(wordcount.containsKey(curword)) wordcount.put(curword, wordcount.get(curword)+wordhm.get(curword)); else wordcount.put(curword, wordhm.get(curword)); } } return new WareHouse("word", wordcount); } public static void main(String[] args) { Contractor a = new WordcountCT(); long begin = (new Date()).getTime(); WareHouse result = a.giveTask(new WareHouse("filepath", args[0]));//"D:\\demo\\parallel\\a\\three.txt" long end = (new Date()).getTime(); System.out.println("time:"+(end-begin)/1000+"s"); System.out.println("result:"+result); } }