java多线程的使用

2021-02-15 10:19

阅读:426

标签:ret   run   size   lis   cut   builder   idle   second   dfa   

1.阿里巴巴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

(3)workQueue
该线程池中的任务队列:维护着等待执行的 Runnable 对象。当所有的核心线程都在干活时,新添加的任务会被添加到这个队列中等待处理,如果队列满了,则新建非核心线程执行任务



是为了方便描述而虚拟出来的概念,在代码中并没有哪个线程被标记为“核心线程”或“非核心线程”,所有线程都是一样的只是当线程池中的线程多于指定的核心线程数量时,会将多出来的线程销毁掉,池中只保留指定个数的线程那些被销毁的线程是随机的,可能是第一个创建的线程,也可能是最后一个创建的线程,或其它时候创建的线程。
 

java多线程的使用

标签:ret   run   size   lis   cut   builder   idle   second   dfa   

原文地址:https://www.cnblogs.com/seu-mazhi/p/12715003.html


评论


亲,登录后才可以留言!