• 线程池(8)创建标准线程池代码


    阿里规范要求的标准做法2------hutool创建ThreadFactory

    import java.util.concurrent.BlockingQueue;
    import java.util.concurrent.ExecutorService;
    import java.util.concurrent.LinkedBlockingQueue;
    import java.util.concurrent.RejectedExecutionHandler;
    import java.util.concurrent.ThreadFactory;
    import java.util.concurrent.ThreadPoolExecutor;
    import java.util.concurrent.TimeUnit;
    
    import lombok.extern.slf4j.Slf4j;
    import cn.hutool.core.thread.ThreadFactoryBuilder;
    
    @Slf4j
    public class ThreadPoolExecutorStandard2 {
        public static void main(String[] args) {
            BlockingQueue<Runnable> blockQueue = new LinkedBlockingQueue<Runnable>(1024);
            RejectedExecutionHandler abort = new ThreadPoolExecutor.AbortPolicy();
            ThreadFactory namedThreadFacgtory = new ThreadFactoryBuilder().setNamePrefix("test-pool-").build();
            ExecutorService fixedThreadPool = new ThreadPoolExecutor(3, 5, 50L, TimeUnit.MILLISECONDS, blockQueue,
                    namedThreadFacgtory, abort);
    
            try {
                for (int i = 0; i < 20; i++) {
                    Runnable syncRunnable = new Runnable() {
                        @Override
                        public void run() {
                            log.info(Thread.currentThread().getName());
                            try {
                                Thread.sleep(2000);
                            } catch (InterruptedException e) {
                                e.printStackTrace();
                            }
                        }
                    };
                    fixedThreadPool.execute(syncRunnable);
                }
            } finally {
                fixedThreadPool.shutdown();
            }
        }
    }

    输出:

    15:11:16.098 test-pool-0

    15:11:16.098 test-pool-1

    15:11:16.098 test-pool-2

    15:11:18.101 test-pool-1

    15:11:18.101 test-pool-0

    15:11:18.101 test-pool-2

    15:11:20.101 test-pool-1

    15:11:20.102 test-pool-0

    15:11:20.102 test-pool-2

    15:11:22.101 test-pool-1

    15:11:22.102 test-pool-0

    15:11:22.104 test-pool-2

    15:11:24.102 test-pool-1

    15:11:24.104 test-pool-0

    15:11:24.105 test-pool-2

    15:11:26.103 test-pool-1

    15:11:26.104 test-pool-0

    15:11:26.105 test-pool-2

    15:11:28.103 test-pool-1

    15:11:28.105 test-pool-0

  • 相关阅读:
    5 粘包现象与解决方案
    4 Socket代码实例
    协程与多路io复用epool关系
    基于selector的socket并发
    基于select类型多路IO复用,实现简单socket并发
    协程实现多并发socket,跟NGINX一样
    利用协程实现简单爬虫
    协程
    进程池pool
    进程锁 Lock
  • 原文地址:https://www.cnblogs.com/yaoyuan2/p/10369988.html
Copyright © 2020-2023  润新知