FixedThreadUtil.java 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. package com.siwei.apply.utils;
  2. import com.google.common.util.concurrent.ThreadFactoryBuilder;
  3. import java.util.concurrent.LinkedBlockingQueue;
  4. import java.util.concurrent.ThreadFactory;
  5. import java.util.concurrent.ThreadPoolExecutor;
  6. import java.util.concurrent.TimeUnit;
  7. /**
  8. * 异步线程池
  9. *
  10. * @author wanger
  11. **/
  12. public class FixedThreadUtil {
  13. private FixedThreadUtil() {
  14. }
  15. /**
  16. * 线程数
  17. */
  18. private static final int N_CPUS = Runtime.getRuntime().availableProcessors();
  19. /**
  20. * 使用 ThreadFactoryBuilder 创建自定义线程名称的 ThreadFactory
  21. */
  22. private static final ThreadFactory NAMED_THREAD_FACTORY = new ThreadFactoryBuilder()
  23. .setNameFormat("hyn-demo-pool-%d").build();
  24. /**
  25. * 创建线程池,其中任务队列需要结合实际情况设置合理的容量 消费大数据kafka
  26. */
  27. public static final ThreadPoolExecutor FIXED_THREAD_POOL = new ThreadPoolExecutor(N_CPUS,
  28. N_CPUS * 2,
  29. 0L,
  30. TimeUnit.MILLISECONDS,
  31. new LinkedBlockingQueue<>(10240),
  32. NAMED_THREAD_FACTORY,
  33. new ThreadPoolExecutor.CallerRunsPolicy());
  34. }