/[projects]/dao/FuldDaekningWorker/src/dk/daoas/fulddaekning/Lookup.java
ViewVC logotype

Annotation of /dao/FuldDaekningWorker/src/dk/daoas/fulddaekning/Lookup.java

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2260 - (hide annotations) (download)
Mon Feb 9 14:00:53 2015 UTC (9 years, 3 months ago) by torben
File size: 2919 byte(s)
threadpool - now it actually works
1 torben 2145 package dk.daoas.fulddaekning;
2    
3     import java.util.Map;
4 torben 2150 import java.util.Queue;
5 torben 2259 import java.util.concurrent.*;
6 torben 2145 import java.util.logging.Level;
7     import java.util.logging.Logger;
8    
9     import dk.daoas.fulddaekning.BoundingBox.BoundingBoxException;
10    
11     public class Lookup {
12 torben 2158
13 torben 2145
14 torben 2195
15 torben 2241 final static Logger logger = Logger.getLogger( Lookup.class.toString() );
16 torben 2145
17 torben 2238 String postnr;
18 torben 2145 Database db;
19 torben 2150
20 torben 2207 Adresse daekkedeAdresser[];
21 torben 2150 Queue<Adresse> queue;
22 torben 2145
23     Map<Integer, LookupWorker> workers = new ConcurrentHashMap<Integer, LookupWorker>();
24    
25 torben 2259 ThreadPoolExecutor threadPool;
26 torben 2227
27 torben 2154
28    
29 torben 2259 public Lookup(String postnr, Database db, ThreadPoolExecutor threadPool) {
30 torben 2150 this.postnr = postnr;
31 torben 2145 this.db = db;
32 torben 2259 this.threadPool = threadPool;
33 torben 2145 }
34    
35 torben 2241
36 torben 2145
37     public void doLookup() throws BoundingBoxException {
38 torben 2150 logger.info("Starting for postnr=" + postnr);
39 torben 2145
40 torben 2154 Statistik stat = new Statistik();
41    
42 torben 2145 long start1 = System.currentTimeMillis();
43     long start2 = 0;
44    
45     try {
46 torben 2232
47     logger.info("Henter _ikke_ daekkede adresser i " + postnr);
48     queue = db.hentIkkedaekkedeAdresser(postnr);
49     if (queue.size() == 0) {
50     logger.info("Fandt ikke nogen _ikke_ daekkede adresser i " + postnr);
51 torben 2233 return;
52 torben 2232 }
53    
54 torben 2150 BoundingBox bbox = db.getBoundingbox(postnr);
55     bbox.validateBbox();
56    
57     logger.info("Bbox=" + bbox);
58     bbox.adjustToMargin();
59     logger.info("Bbox Adjusted=" + bbox);
60    
61     logger.info("Henter daekkede adresser i " + postnr);
62     daekkedeAdresser = db.hentDaekkedeAdresser(bbox);
63    
64 torben 2154 stat.postnr = postnr;
65 torben 2207 stat.antalDaekkede = daekkedeAdresser.length;
66 torben 2154 stat.antalIkkeDaekkede = queue.size();
67 torben 2227 stat.totalDataset = stat.antalDaekkede * stat.antalIkkeDaekkede;
68    
69 torben 2150
70     logger.info("Starter beregning for " + postnr);
71 torben 2145 start2 = System.currentTimeMillis();
72    
73 torben 2241 for (int i =0; i < LookupMain.max_workers; i++) {
74 torben 2145 LookupWorker worker = new LookupWorker(i, this);
75 torben 2260 threadPool.submit(worker);
76 torben 2145 }
77    
78 torben 2260 while (threadPool.getActiveCount() > 0 || threadPool.getQueue().isEmpty() == false) {
79 torben 2145 Thread.sleep(10);//wait for worker threads
80     }
81    
82 torben 2219 db.saveBatch();//Save any unsaved rows
83 torben 2145
84 torben 2219
85 torben 2145 } catch(Exception e) {
86     logger.log(Level.WARNING, "Exception during lookup", e);
87    
88     if (e instanceof BoundingBoxException) {
89     logger.severe( e.getMessage() );
90     System.exit(1);
91     }
92    
93     }
94     long now = System.currentTimeMillis();
95    
96 torben 2227 stat.forbrugtTid = (now-start1);
97 torben 2241 LookupMain.saveStatistics(stat);
98 torben 2154
99     logger.info( stat.toString() );
100 torben 2153 logger.info("Done! elapsed=" + (now-start1) + "/" + (now-start2) + " postnr=" + postnr);
101 torben 2145 }
102    
103    
104     // Getters and setters
105    
106     ///////////////////////////
107     public Database getDb() {
108     return db;
109     }
110 torben 2150
111    
112    
113 torben 2207 public Adresse[] getDaekkedeAdresser() {
114 torben 2150 return daekkedeAdresser;
115 torben 2145 }
116    
117 torben 2150 public Queue<Adresse> getQueue() {
118     return queue;
119     }
120    
121    
122 torben 2145 }

  ViewVC Help
Powered by ViewVC 1.1.20