java多线程的使用
Posted seu-mazhi
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java多线程的使用相关的知识,希望对你有一定的参考价值。
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多线程的使用的主要内容,如果未能解决你的问题,请参考以下文章