public void newExecute() {
//获得线程数,默许30
int threadNum = 30;
String strThreadNum = LionConfigUtils.getProperty("ts-monitor-job.dailyJob.accountBalanceDailyCheckerThreadNum",
"");
if (isNumeric(strThreadNum)) {
threadNum = Integer.parseInt(strThreadNum);
}
ExecutorService service = Executors.newFixedThreadPool(threadNum);
//所有账号总数
int accountCount = accountDao.findAllMerchantAccountCount();
int latchCount = accountCount % BATCH_SIZE == 0 ? accountCount / BATCH_SIZE : (accountCount / BATCH_SIZE + 1);
final CountDownLatch latch = new CountDownLatch(latchCount);
final Date bizDate = DateUtils.addDate(DateUtils.removeTime(new Date()), -1);
final Date lastBizDate = DateUtils.addDate(bizDate, -1);
int offset = 0;
while (offset < accountCount) {
offset += BATCH_SIZE;
final int initPage = offset;
Runnable run = new Runnable() {
public void run() {
try {
//todo
List<AccountData> accountDataList = accountDao.findAllMerchantAccount(initPage, BATCH_SIZE);
for (AccountData accountData : accountDataList) {
Thread.sleep(20);
doAccountMonitor(bizDate, lastBizDate, accountData);
}
} catch (Exception e) {
monitorLogger.error(String.format("severity=[1], query account data list fail! offset = " +
"[%d]...", initPage), e);
} finally {
latch.countDown();
}
}
};
service.submit(run);
}
try {
latch.await();
} catch (InterruptedException e) {
monitorLogger.error("CountDownLatch.await() error:" + e);
}
} public void newExecute() {
//获得线程数,默许3