线程池

2020-12-28  本文已影响0人  追梦小蜗牛
pexels-roman-odintsov-4553622.jpg

定义:

重复利用前面已经存在的线程执行当前提交的任务,解决了线程周期开销和过多的资源消耗。

类图:

ThreadPoolExecutor.png

关键参数含义:

SynchronousQueue:

Hook methods:

定义一些空的protected空方法,特意留给子类覆盖调用、扩展、定制一些功能。
有三个可扩展方法:

* class PausableThreadPoolExecutor extends ThreadPoolExecutor {
 *   private boolean isPaused;
 *   private ReentrantLock pauseLock = new ReentrantLock();
 *   private Condition unpaused = pauseLock.newCondition();
 *
 *   public PausableThreadPoolExecutor(...) { super(...); }
 *
 *   protected void beforeExecute(Thread t, Runnable r) {
 *     super.beforeExecute(t, r);
 *     pauseLock.lock();
 *     try {
 *       while (isPaused) unpaused.await();
 *     } catch (InterruptedException ie) {
 *       t.interrupt();
 *     } finally {
 *       pauseLock.unlock();
 *     }
 *   }
 *
 *   public void pause() {
 *     pauseLock.lock();
 *     try {
 *       isPaused = true;
 *     } finally {
 *       pauseLock.unlock();
 *     }
 *   }
 *
 *   public void resume() {
 *     pauseLock.lock();
 *     try {
 *       isPaused = false;
 *       unpaused.signalAll();
 *     } finally {
 *       pauseLock.unlock();
 *     }
 *   }
 * }}</pre>
上一篇下一篇

猜你喜欢

热点阅读