--- dao/FuldDaekningWorker/src/dk/daoas/fulddaekning/Lookup.java 2015/02/10 11:03:44 2262 +++ dao/FuldDaekningWorker/src/dk/daoas/fulddaekning/Lookup.java 2015/02/10 16:27:15 2263 @@ -2,7 +2,9 @@ import java.util.Map; import java.util.Queue; -import java.util.concurrent.*; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.CyclicBarrier; +import java.util.concurrent.ThreadPoolExecutor; import java.util.logging.Level; import java.util.logging.Logger; @@ -23,6 +25,8 @@ Map workers = new ConcurrentHashMap(); ThreadPoolExecutor threadPool; + + CyclicBarrier barrier; @@ -42,6 +46,8 @@ long start1 = System.currentTimeMillis(); long start2 = 0; + barrier = new CyclicBarrier(LookupMain.max_workers + 1); + try { logger.info("Henter _ikke_ daekkede adresser i " + postnr); @@ -59,7 +65,8 @@ logger.info("Bbox Adjusted=" + bbox); logger.info("Henter daekkede adresser i " + postnr); - daekkedeAdresser = db.hentDaekkedeAdresser(bbox); + daekkedeAdresser = db.hentDaekkedeAdresserCache(bbox); + stat.postnr = postnr; stat.antalDaekkede = daekkedeAdresser.length; @@ -71,13 +78,11 @@ start2 = System.currentTimeMillis(); for (int i =0; i < LookupMain.max_workers; i++) { - LookupWorker worker = new LookupWorker(i, this); + LookupWorker worker = new LookupWorker(i, this, barrier); threadPool.submit(worker); } - while (threadPool.getActiveCount() > 0 || threadPool.getQueue().isEmpty() == false) { - Thread.sleep(10);//wait for worker threads - } + barrier.await(); db.saveBatch();//Save any unsaved rows