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多线程的使用的主要内容,如果未能解决你的问题,请参考以下文章

Java多线程——Lock&Condition

Java多线程与并发库高级应用-工具类介绍

Java多线程与并发库高级应用-工具类介绍

多线程 Thread 线程同步 synchronized

Java多线程概述及创建

Java多线程具体解释