Thread Pool
public Map<String, Long> test() {
ThreadFactory namedThreadFactory = new ThreadFactoryBuilder()
.setNameFormat("www").build();
ThreadPoolExecutor executor = new ThreadPoolExecutor(
5,
5,
0L,
TimeUnit.MILLISECONDS,
new LinkedBlockingQueue<>(1024),
namedThreadFactory,
new ThreadPoolExecutor.AbortPolicy());
CountDownLatch countDownLatch = new CountDownLatch(3);
Map<String, Long> map = new ConcurrentHashMap<>();
Runnable labelRunnable = new Runnable() {
@Override
public void run() {
try {
LabelQuery labelQuery = new LabelQuery();
Long num = labelDAO.dynamicSelectCount(labelQuery);
map.put("label", num);
} catch (DAOException e) {
e.printStackTrace();
}finally {
countDownLatch.countDown();
}
}
};
Runnable materialLabelRunnable = new Runnable() {
@Override
public void run() {
try {
MaterialLabelQuery materialLabelQuery = new MaterialLabelQuery();
Long num = MaterialServiceImpl.this.materialLabelDAO.dynamicSelectCount(materialLabelQuery);
map.put("materialLabel", num);
} catch (DAOException e) {
e.printStackTrace();
}finally {
countDownLatch.countDown();
}
}
};
Runnable materialRunnable = new Runnable() {
@Override
public void run() {
try {
MaterialQuery materialQuery = new MaterialQuery();
Long num = materialDAO.dynamicSelectCount(materialQuery);
map.put("material",num);
} catch (DAOException e) {
e.printStackTrace();
}finally {
countDownLatch.countDown();
}
}
};
Callable<Long> homeMaterialCallable = new Callable<Long>() {
@Override
public Long call() throws Exception {
return homeMaterialDAO.dynamicSelectCount(new HomeMaterialQuery());
}
};
Callable<Long> carLabelMaterialCallable = new Callable<Long>() {
@Override
public Long call() throws Exception {
return carLabelMaterialDAO.dynamicSelectCount(new CarLabelMaterialQuery());
}
};
FutureTask<Long> homeMaterial = new FutureTask<>(homeMaterialCallable);
FutureTask<Long> carLabelMaterial = new FutureTask<>(carLabelMaterialCallable);
executor.submit(homeMaterial);
executor.submit(carLabelMaterial);
executor.execute(labelRunnable);
executor.execute(materialLabelRunnable);
executor.execute(materialRunnable);
try {
map.put("homeMaterial",homeMaterial.get());
map.put("carLabelMaterial",carLabelMaterial.get());
} catch (Exception e) {
e.printStackTrace();
}finally {
executor.shutdown();
}
try {
countDownLatch.await(1, TimeUnit.SECONDS);
} catch (InterruptedException e) {
e.printStackTrace();
}finally {
executor.shutdown();
}
return map;
}