/[projects]/dao/DaoAdresseVedligehold/src/main/java/dk/daoas/adressevedligehold/afstandandenrute/AfstandAndenRuteTask.java
ViewVC logotype

Diff of /dao/DaoAdresseVedligehold/src/main/java/dk/daoas/adressevedligehold/afstandandenrute/AfstandAndenRuteTask.java

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 2976 by torben, Mon Mar 14 07:37:34 2016 UTC revision 3074 by torben, Thu Jul 28 11:37:37 2016 UTC
# Line 13  import java.util.concurrent.ThreadFactor Line 13  import java.util.concurrent.ThreadFactor
13  import java.util.concurrent.atomic.AtomicInteger;  import java.util.concurrent.atomic.AtomicInteger;
14    
15  import ags.utils.dataStructures.trees.thirdGenKD.KdTree;  import ags.utils.dataStructures.trees.thirdGenKD.KdTree;
16  import dk.daoas.adressevedligehold.ReloadHelper;  import dk.daoas.adressevedligehold.ReloadTask;
17  import dk.daoas.adressevedligehold.ServiceConfig;  import dk.daoas.adressevedligehold.ServiceConfig;
18  import dk.daoas.adressevedligehold.beans.Address;  import dk.daoas.adressevedligehold.beans.Address;
19  import dk.daoas.adressevedligehold.db.DBConnection;  import dk.daoas.adressevedligehold.db.DBConnection;
# Line 45  public class AfstandAndenRuteTask extend Line 45  public class AfstandAndenRuteTask extend
45    
46          ExecutorService threadPool;          ExecutorService threadPool;
47    
48          boolean isIncremental;          final boolean isIncremental;    
49            final int max_workers;
50    
51    
52          public AfstandAndenRuteTask(String distributor, String type) {          public AfstandAndenRuteTask(String distributor, String type) {
# Line 62  public class AfstandAndenRuteTask extend Line 63  public class AfstandAndenRuteTask extend
63                  default:                  default:
64                          throw new RuntimeException("Unknown type" + type);                                                throw new RuntimeException("Unknown type" + type);                      
65                  }                  }
66                    
67                    int tmp_max_workers = ServiceConfig.getInstance().maxWorkers;    
68                    if (tmp_max_workers <= 0) {      
69                            logger.info("!!! AUTO-DETECT MAX_WORKERS !!!");  
70                            int cores = Runtime.getRuntime().availableProcessors();  
71                            cores -= 1;//Efterlad 1 core/cpu i reserve til systemet  
72    
73                            tmp_max_workers = Math.max(1, cores); //Dog skal der som minimum være 1 core til beregning      
74    
75                    }        
76                    if (test_mode) {
77                            tmp_max_workers = 1;
78                    }
79                    
80                    max_workers = tmp_max_workers;
81          }          }
82    
83    
# Line 72  public class AfstandAndenRuteTask extend Line 88  public class AfstandAndenRuteTask extend
88                  Constants.init(distributor);                  Constants.init(distributor);
89                  Constants consts = Constants.getInstance();                  Constants consts = Constants.getInstance();
90    
91                  int max_workers = ServiceConfig.getInstance().maxWorkers;                          
                 if (max_workers <= 0) {    
                         logger.info("!!! AUTO-DETECT MAX_WORKERS !!!");    
                         int cores = Runtime.getRuntime().availableProcessors();    
                         cores -= 1;//Efterlad 1 core/cpu i reserve til systemet    
   
                         max_workers = Math.max(1, cores); //Dog skal der som minimum være 1 core til beregning    
   
                 }          
                 if (test_mode) {  
                         max_workers = 1;  
                 }  
92                  logger.info("Starting with MAX_WORKERS:" + max_workers);                          logger.info("Starting with MAX_WORKERS:" + max_workers);        
93                  setupThreadPool(max_workers);  
94                    threadPool = Executors.newFixedThreadPool(max_workers, new WorkerThreadFactory() );
95                                    
96                  logger.info("Starting with INCREMENTAL:" + isIncremental);                  logger.info("Starting with INCREMENTAL:" + isIncremental);
97    
# Line 105  public class AfstandAndenRuteTask extend Line 111  public class AfstandAndenRuteTask extend
111    
112                  logger.info("======================================================================");                  logger.info("======================================================================");
113                                    
114                  mainRun(consts, isIncremental, "ruteMa", max_workers,  antalFundne, antalDaekkedeAdresser);                  mainRun(consts, isIncremental, "ruteMa", antalFundne, antalDaekkedeAdresser);
115                                    
116                  logger.info("======================================================================");                  logger.info("======================================================================");
117                                    
118                  mainRun(consts, true, "ruteLo", max_workers,  antalFundne, antalDaekkedeAdresser);                  mainRun(consts, true, "ruteLo", antalFundne, antalDaekkedeAdresser);
119                                    
120                  logger.info("======================================================================");                  logger.info("======================================================================");
121                                    
122                  mainRun(consts, true, "ruteSo", max_workers,  antalFundne, antalDaekkedeAdresser);                  mainRun(consts, true, "ruteSo",  antalFundne, antalDaekkedeAdresser);
123                                    
124                  logger.info("======================================================================");                  logger.info("======================================================================");
125    
126                  // END OF MAIN run                  // END OF MAIN run
127                                    
128                  threadPool.shutdown(); //Calc is done now                  threadPool.shutdown(); //Calc is done now
129                    threadPool = null;//release early for GC
130                                                    
131    
132                  ReloadHelper.triggerReload( "AfstandAndenRute/" + distributor );                  manager.submitTask( new ReloadTask("AfstandAndenRute/" + distributor) );
133                                    
134    
135                  long now = System.currentTimeMillis();                  long now = System.currentTimeMillis();
# Line 139  public class AfstandAndenRuteTask extend Line 146  public class AfstandAndenRuteTask extend
146          }          }
147    
148    
149          private void mainRun(Constants consts, boolean localIsIncremental, String ugedag, int max_workers, AtomicInteger antalFundne, AtomicInteger antalDaekkedeAdresser) throws Exception {          private void mainRun(Constants consts, boolean localIsIncremental, String ugedag, AtomicInteger antalFundne, AtomicInteger antalDaekkedeAdresser) throws Exception {
150                                    
151                  logger.info("MainRun() isIncremental=" + localIsIncremental + " ugedag=" + ugedag);                  logger.info("MainRun() isIncremental=" + localIsIncremental + " ugedag=" + ugedag);
152                                    
# Line 235  public class AfstandAndenRuteTask extend Line 242  public class AfstandAndenRuteTask extend
242                  return String.format("%02d:%02d:%02d.%03d", hours, minutes, seconds, mseconds);                  return String.format("%02d:%02d:%02d.%03d", hours, minutes, seconds, mseconds);
243          }          }
244    
         private void setupThreadPool(int max_workers) {    
                 threadPool = Executors.newFixedThreadPool(max_workers, new WorkerThreadFactory() );        
         }  
245    
246          static class WorkerThreadFactory implements ThreadFactory {                static class WorkerThreadFactory implements ThreadFactory {      
247                  int count = 0;                    int count = 0;  

Legend:
Removed from v.2976  
changed lines
  Added in v.3074

  ViewVC Help
Powered by ViewVC 1.1.20