import java.util.concurrent.ThreadFactory;
import java.util.concurrent.atomic.AtomicInteger;
/**
* 自定义线程工厂
*/
public class CustomThreadFactory implements ThreadFactory {
private String namePrefix;
private AtomicInteger count = new AtomicInteger(1);
public CustomThreadFactory(String namePrefix) {
this.namePrefix = namePrefix;
}
@Override
public Thread newThread(Runnable r) {
return new Thread(r, namePrefix + count.getAndIncrement());
}
}
public class ExecutorManager {
public static ExecutorService executorServiceMsg =
new ThreadPoolExecutor(5, 2000, 5, TimeUnit.MINUTES
, new ArrayBlockingQueue<>(2000)
, new CustomThreadFactory("tss_executor_"),
new ThreadPoolExecutor.CallerRunsPolicy());
}
CompletableFuture<Fetch>[] completableFutureArr
= fetchOrderRQ.splitRQ().stream()
.map(rq ->
CompletableFuture.supplyAsync(() -> {
return innesDetail(rq );
}, executor))
.toArray((IntFunction<CompletableFuture<Fetch>[]>)CompletableFuture[]::new);
CompletableFuture.allOf(completableFutureArr).join();
List<Fetch> fetchOrderRSList = Stream.of(completableFutureArr)
.filter(Objects::nonNull)
.map(o -> o.getNow(null))
.filter(Objects::nonNull)
.collect(Collectors.toList());
网友评论