java线程池的使用

爱被打了一巴掌 2023-10-14 15:44 128阅读 0赞

线程池工具类

如何合理设置线程池核心参数

ThreadPoolUtils.java

  1. public class ThreadPoolUtils {
  2. /**
  3. * 线程池
  4. */
  5. private static ExecutorService threadPool;
  6. static {
  7. // 配置线程池
  8. int availableProcessors = Runtime.getRuntime().availableProcessors();
  9. ThreadFactory namedThreadFactory = new ThreadFactoryBuilder().setNameFormat("pmj-pool-%d").build();
  10. threadPool = new TraceThreadPoolExecutor(availableProcessors, availableProcessors * 10, 0L, TimeUnit.MILLISECONDS,
  11. new LinkedBlockingQueue<>(availableProcessors * 100), namedThreadFactory, new ThreadPoolExecutor.AbortPolicy());
  12. }
  13. /**
  14. * 获取同步线程池
  15. *
  16. * @return
  17. */
  18. public static ExecutorService getThreadPool() {
  19. return threadPool;
  20. }
  21. }

使用实例

  1. //异步执行处理
  2. ThreadPoolUtils.getThreadPool().submit(() -> {
  3. long startTime = System.currentTimeMillis();
  4. try{
  5. //要执行的代码逻辑
  6. }catch(Exception e){
  7. //打印错误日志
  8. }finally {
  9. //释放分布式锁
  10. JedisUtil.del(lockKey);
  11. }
  12. System.currentTimeMillis() - startTime;
  13. });

发表评论

表情:
评论列表 (有 0 条评论,128人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Java线使用

    Java线程池的使用 前言 众所周知,近十年来摩尔定律逐渐在很多领域已经失效了,单个`CPU`的性能已经很难满足科技的需求,所以现在很多时候会采用多核的方式来提升整

    相关 Java线使用

    对于线程池的使用,应该将线程池置为单例模式,节省内存的开销,线程池线程的数量可以根据业务,内核,cup等进行评估。 常用的线程池是使用java并发包中的ThreadPool

    相关 Java线使用

     如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程就会大大降低系统的效率,因为频繁创建线程和销毁线程需要时间。   那么有没有一种办法

    相关 Java线使用

    线程池(Thread Pool): 一种线程的使用模式。线程过多会带来调度开销,进而影响缓存局部性和整体性能。而线程池维护着多个线程,等待着监督管理者分配可并发执行的任务。