Java中的线程池

2021-09-04  本文已影响0人  kidawinterII

Java提供的线程池出自并发大师Doug Lea之手,向大师致敬!

1. 为什么要用线程池

合理使用线程池可以带来3个好处:

2. 线程池的原理

当向线程池提交了一个任务之后,线程池是如何处理这个任务的呢?

3. 线程池的使用

通过ThreadPoolExecutor来创建一个线程池:

new ThreadPoolExecutor(corePoolSize, maxPoolSize, keepAliveTime, unit, queue)

创建完成后通过ThreadPoolExecutor的execute(sumbmit最终也是调用execute执行任务)方法向线程池提交任务,代码如下:

public void execute(Runnable command) {
        if (command == null)
            throw new NullPointerException();
        int c = ctl.get();
        if (workerCountOf(c) < corePoolSize) {
            if (addWorker(command, true))
                return;
            c = ctl.get();
        }
        if (isRunning(c) && workQueue.offer(command)) {
            int recheck = ctl.get();
            if (! isRunning(recheck) && remove(command))
                reject(command);
            else if (workerCountOf(recheck) == 0)
                addWorker(null, false);
        }
        else if (!addWorker(command, false))
            reject(command);
    }
上一篇 下一篇

猜你喜欢

热点阅读