2019-12_15
- 修复: 修复极低概率下ExceedWait在等待队列的大小大于0并且运行中的任务小于等于0的时候可能出现stackoverflow异常的问题
- 修复: 修复极小概率只有在有新任务进来的时候等待队列才能被消化的问题
2019-08-01
- 修复: 修复线程数计算不够准确的问题
- 修复: 修复线程类型由于考虑大小写无法匹配问题
2019-07-29
- 性能: 优化获取所有线程数的耗时(不再会获取对应的stacktrace)
2018-09-28
修复当worker count
等于max-pool-size
并且有一个worker-thread
正阻塞在等待队列有新的任务并且在队列有新任务了但是cpu时间片没有分配到该阻塞worker-thread
的时候,ExceedWait出现Stackoverflow的问题
2017-03-23
- 新增
ThreadDebugger#ignoreUnknownCategory
: 在进行输出时忽略未通过ThreadDebugger#add
主动添加分类的线程变化。
- 修复: 修复了在错误的时机删除的输出分隔符。
- 修复: 修复在一些场景下,无法准确的匹配线程名的开头部分。
2016-10-09
- 新增
ThreadPools#newNoCorePool
: 如果有threadCount
个数的任务正在运行,再增加进来的任务将会进入等待队列中直到有线程空闲出来。如果空闲线程空闲的时间大于keepAliveTime
,那么它将会被回收。
- 提高稳定性: 如果在调用
ThreadPools.newExceedWaitPool
时,所提供的corePoolSize
等于0
,那么我们会创建NoCorePool
而非ExceedWaitPool
,以此避免在高并发调度ExceedWaitPool
的时候小概率出现StackOverflow
的异常,因为在ExceedWaitPool
中当corePoolSize
为0
并且高频率执行大量任务的时候,getActiveCount()
的返回值有可能是0
,但是实际的运行中的线程数是大于0
的。
2016-09-11
- 新增
ExceedWait.java
: 暴露exceed-wait-pool
的组件,使得它更加易于拓展。
- 提高实用性: 降低
thread-pool
库的minSDK版本: 9->7。
- 修复(thread-pool): 覆盖当仅仅只有
exceed-queue
中有需要执行的任务的时候,主队列还在等待任务入队或者没有执行中的任务的情况。 - 修复(thread-pool): 对于
exceed-wait-pool
,当exceed-queue
中存在任务需要执行的时候,错误的还在等待主队列,导致exceed-queue
中的队列无法及时的被执行。 - 修复:
ExceedWait.Queue
的构造函数是package visible
导致无法直接创建的问题。
2016-09-09
- 提高性能: 使用
String#compareToIgnoreCase()
代替String#toLowCase()
+String#startWith()
来减少在IThreadDebugger#refresh()
中的耗时。 - 提高性能: 优化thread-debugger中的代码编写风格来优化其性能。
2016-09-02
- 新增
threaddebugger-no-op
: 十分轻量,不包含任何threaddebugger
的代码, 目前只包含一些空Class, 便于release编译时不带上threaddebugger
。
2016-09-01
- 新增
ThreadDebugger.NEED_PRINT_COST
: 用于控制是否需要输出刷新调试器所消耗的时间。 - 新增
IExecutor#getPrefixName(void):String
: 获取当前Executor名称的前缀。
2016-09-01
- 提高实用性: 修正
ThreadPools.java
中的Java-doc。
2016-09-01
- initial release