摘要:
本文带领你从各个方面了解并掌握ThreadLocal,进而彻底精通。 使用场景 1.每个线程需要一个独享的对象(不安全的工具类) 2.每个线程需要保存全局变量(可让不同的方法调用) 以下实例代码对共享的操作添加了类锁,会有性能问题,见下图 package threadPool; import jav 阅读全文
posted @ 2020-04-21 15:50
cnxieyang
阅读(339)
评论(0)
推荐(0)
摘要:
本文介绍线程池的5种状态,也可从源码中查找,见下图。本文详细介绍下这五种状态。 Running 代表当前线程池可以接受新的任务进行运行,也可以去处理队列中的任务 Shutdown 表示当前线程池不再接受新的任务,当时仍然可以处理队列中的任务,待处理完成后,状态会发生改变 Stop 表示当前线程既不接 阅读全文
posted @ 2020-04-21 15:41
cnxieyang
阅读(388)
评论(0)
推荐(0)
摘要:
本文分别从线程池的组成部分和原理方面进行讲解。 线程池的组成部分 主要包含:Executor、ExecutorService、Executors、AbstracExecutorService、ThreadPoolExecutor等,下文从集成关系方面进行说明。 线程池的原理 重点讲解线程池如何去实现 阅读全文
posted @ 2020-04-21 15:17
cnxieyang
阅读(489)
评论(0)
推荐(0)
摘要:
我们经常听说过钩子方法,高级模块会用到,本文结合线程池进行演示beforeExecute的钩子方法。见下实例代码,可控制线程池的运行和终止。 package threadPool; import java.util.concurrent.*; import java.util.concurrent. 阅读全文
posted @ 2020-04-21 14:25
cnxieyang
阅读(779)
评论(0)
推荐(0)
摘要:
本文重点讲解当线程池的任务过多时,如何去拒绝这些任务。 拒绝条件 1.线程已经shutdown了,需要拒绝 2.最大线程数或者队列已经满了,需要拒绝 拒绝策略 1.abortPolicy: 直接抛出异常 2.discardPolicy:任务丢弃,收不到通知 3.discardOldestPolicy 阅读全文
posted @ 2020-04-21 14:24
cnxieyang
阅读(948)
评论(0)
推荐(0)
摘要:
上篇博客介绍了线程池的创建的,本文重点介绍线程池应该如何关闭。 线程池停止的相关方法有:shutdown、 shutdown 关闭线程池的方法之一,调用线程池的此方法后,不再接受新的任务,待所有任务都执行关闭后,进行关闭 实例代码如下所示,不再接收新任务测试。 package threadPool; 阅读全文
posted @ 2020-04-21 12:03
cnxieyang
阅读(990)
评论(0)
推荐(0)
摘要:
本文介绍下Java中线程池的基本用法,基于此说明如何去确定线程池的大小。 线程池的创建方法 newFixedThreadPool 创建固定线程数的线程池,见下创建代码 /** * Creates a thread pool that reuses a fixed number of threads 阅读全文
posted @ 2020-04-21 11:40
cnxieyang
阅读(237)
评论(0)
推荐(0)
摘要:
我们都知道线程池中很多的参数,了解这些参数的意义对实际问题的定义和解决是非常重要的,本文将会重点介绍:corePoolsize、maxPoolSize、keeyAliveTime、ThreadFactory、workQueue及Handler corePoolSize 核心线程数,即就是中线程池中长 阅读全文
posted @ 2020-04-21 10:46
cnxieyang
阅读(4141)
评论(0)
推荐(0)
摘要:
本文概要绘制线程池是如何创建线程的,绘制了一个简易的流程,描述了线程池增加线程的顺序如下: 核心线程数(corePoolSize)-->队列(workQueue)-->最大线程数(maxPoolSize)见下图。 阅读全文
posted @ 2020-04-21 10:23
cnxieyang
阅读(1875)
评论(0)
推荐(0)

浙公网安备 33010602011771号