功能:仅支持自动创建线程和线程复用
import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.ThreadPoolExecutor;
/**
*/
public class MyThreadPool {
int corePoolSize;
int currentPoolSize;
LinkedBlockingQueue<Runnable> todoWorks = new LinkedBlockingQueue<>();
public MyThreadPool(int corePoolSize) {
this.corePoolSize = corePoolSize;
}
public synchronized void Executor(Runnable runnable) {
if (currentPoolSize < corePoolSize) {
this.addThread(runnable);
} else {
todoWorks.add(runnable);
}
}
private void addThread(Runnable runnable) {
new MyThread(runnable, "myThread" + currentPoolSize).start();
currentPoolSize++;
}
// ??这个thread lambdal 是怎么写的,是和用的构造方法是Thread(runnable)相关吗?
class MyThread extends Thread {
Runnable runnable;
@Override
public void run() {
if (runnable != null) {
runnable.run();
}
try {
while (true) {
Runnable todoRunnable = todoWorks.take();
todoRunnable.run();
System.out.println(this.toString());
}
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public MyThread(Runnable runnable) {
this.runnable = runnable;
}
public MyThread(Runnable runnable2, String name) {
super(runnable2, name);
}
}
}