java如何使用线程池 new threadPoolExecutor()

发布时间 2023-04-21 16:45:25作者: 沐浴春风18

//使用线程池 不返回结果 脚本中使用的
Class B {
private static final ExecutorService executor = new ThreadPoolExecutor(4, 10, 3000L,TimeUnit.MILLISECONDS,
new ArrayBlockingQueue<>(500),
new ThreadFactoryBuilder().setNameFormat("publish-pool-%d").build(),
(r, executor) -> {
log.error("publish - pool pool rejected")
})

executor.submit(()-> test());

// 具体调用的方法
protect void test() {
// 业务逻辑
}
}

// 接口中使用
class A{

private static final ExecutorService executor = new ThreadPoolExecutor(8, 12, 60L,TimeUnit.SECONDS,
new LinkedBlockingQueue<>(100),
new ThreadFactoryBuilder().setNameFormat("publish-pool-%d").build(),
new ThreadPoolExecutor.AbortPolicy
)

Future<Map<String, Object>> future = executor.submit(new search(searchQuery));
class search implements Callable<Map<String, Object> > {
private SearchQuery searchQuery;
search(SearchQuery searchQuery) {
this.searchQuery = searchQuery;
}
}

private Map<String, Object> searcRecord(SearchQuery searchQuery)) {

// 业务代码

}

@Override
public Map<String, Object> call() throws Exception {
return searcRecord(searchQuery);
}
}