java多线程的使用
2021-02-15 10:19
标签:ret run size lis cut builder idle second dfa (3)workQueue java多线程的使用 标签:ret run size lis cut builder idle second dfa 原文地址:https://www.cnblogs.com/seu-mazhi/p/12715003.html1.阿里巴巴java规约推荐使用java线程池
ThreadPoolExecutor service = new ThreadPoolExecutor(5, 200,
0L, TimeUnit.MILLISECONDS,
new LinkedBlockingQueue(1024),
new ThreadFactoryBuilder().setNameFormat("demo-pool-%d").build(),
new ThreadPoolExecutor.AbortPolicy());
几个核心变量:
(1)corePoolSize
用于设定 thread pool 需要时刻保持的最小 core threads 的数量,即便这些 core threads 处于空闲状态啥事都不做也不会将它们回收掉,当然前提是你没有设置 allowCoreThreadTimeOut 为 true。
the number of threads to keep in the pool, even if they are idle
(2)maximumPoolSize
the maximum number of threads to allow in the pool
该线程池中的任务队列:维护着等待执行的 Runnable 对象。当所有的核心线程都在干活时,新添加的任务会被添加到这个队列中等待处理,如果队列满了,则新建非核心线程执行任务
是为了方便描述而虚拟出来的概念,在代码中并没有哪个线程被标记为“核心线程”或“非核心线程”,所有线程都是一样的,只是当线程池中的线程多于指定的核心线程数量时,会将多出来的线程销毁掉,池中只保留指定个数的线程。那些被销毁的线程是随机的,可能是第一个创建的线程,也可能是最后一个创建的线程,或其它时候创建的线程。
上一篇:ML学习六 ——逻辑回归算法
下一篇:3-K均值算法