# threadpool-shrink-plugin
**Repository Path**: weishuxin/threadpool-shrink-plugin
## Basic Information
- **Project Name**: threadpool-shrink-plugin
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2022-01-27
- **Last Updated**: 2022-02-11
## Categories & Tags
**Categories**: Uncategorized
**Tags**: Android
## README
# ThreadPoolShrinkPlugin [](https://jitpack.io/#wei120698598/threadpool-shrink-plugin)
## 线程治理
> Android项目经常引用大量的第三方框架和SDK,这些框架中创建的线程池是完全不受控制的,如果使用不当,将会积攒大量无法回收的线程。
> 大多数厂商会对线程数进行限制,线程数过多直接引起崩溃;
> 线程也会占用大量资源,超过内存限制,将会引起无法创建新的线程OOM;
> 线程治理变得尤为重要,`ThreadPoolShrinkPlugin`插件主要作用:排查线程池使用、管理线程池
## 实现方案
1. **排查线程池使用:** 将线程池的调用在编译期全部打印到日志中;
2. **管理线程池** 将要修改的线程池替换为自己创建的线程池;
## 使用步骤
1. 配置项目`build.gradle
```groovy
buildscript {
repositories {
maven { url 'https://jitpack.io' }
}
dependencies {
classpath "com.github.wei120698598:threadpool-shrink-plugin:Tag"
}
}
```
2. 配置Application `build.gradle`
```groovy
apply plugin: 'com.planb.threadpool.shrink'
```
3. 添加`ThreadPoolShrinkOptions`配置
```gradle
threadPoolShrinkOptions {
// 是否启用插件,如果想禁用建议直接控制apply plugin,效率会更高些
enabled true
// 日志开关
debug true
// 自己定义的线程池,会使用这个线程池替换项目中的线程池;
// 线程池类型为ThreadPoolExecutor,签名可以是两种:
// 1. 静态线程池对象;格式为:{className}.{staticField}
// 2. 静态方法,返回线程池;格式为:{className}.{staticMethod}()
defaultExecutorSignature 'com.planb.thread.DefaultThreadPoolExecutor.defaultExecutor'
// 同defaultExecutorSignature,线程池类型为ScheduledThreadPoolExecutor;
defaultScheduledExecutorSignature 'com.planb.thread.DefaultThreadPoolExecutor.defaultScheduledExecutor'
// 不处理的类或包名
classSignaturePrefixFilter = [
'com.planb.thread.ExcludeThreadPoolActivity'
]
// 配置不打印的方法调用,默认打印线程池除了以外所有的方法调用;
executorMethodPrintFilter = [
'execute',
'submit'
]
}
```