Skip to content

SCMRCORE/mini-thread-pool

Repository files navigation

mini-thread-pool

手写一个简单的mini线程池

blog链接🥽 实现简单线程池 | Blog

测试使用

MyThreadPool myThreadPool = new MyThreadPool(corePoolSize, maxPoolSize, timeout, timeUnit, BlockingQueue, RejectHandler;

myThreadPool.execute(()->{
    your task
});

遗憾:未能实现execute原子性,未能实现shutdown,未能实现ThreadFactory

  • 涉及知识点:exception,LockSupport,阻塞队列,线程池
  • 文件结构:
thread-pool/
├── src/
│   ├── main/
│     ├── java/
│     │   └── com.example.threadpool/
│     │       ├── MyThreadPool.java
│     │       ├── RejectHandle.java
│     │       ├── ThreadPoolApplication.java
│     │       └── ThrowRejectHandler.java
│     └── resources/
│         └── application.yml
├── pom.xml
  • 线程池MyThreadPool结构分析:
MyThreadPool/
├── 线程池核心参数/构造方法
│	//corePoolSize, maxSize, timeOut, timeUnit, blockingQueue, rejectHandle
│
├── task容器(List)
│	//coreList存储核心线程,supportList存储辅助线程
│
├── execute方法
│	//生成对应task的线程,涉及到corePoolSize和maxSize判断以及Reject选择
│
└── 两个task对应class线程的run()
	//核心线程task直接从blockingQueue取出,辅助线程task通过poll实现自动释放
  • 执行结果:基本符合

image-20250318175035806

About

手写一个mini的线程池

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages