关于JAVA标志库创建线程池推荐看通过标准库创建线程池
核心思路
实现一个submit方法,让用户传入要执行的任务,在线程池内部,将用户传入的任务存储到阻塞队列中,根据用户实例化线程池时传入的参数,知道线程池中线程的数量,在构造方法中循环创建并启动线程,线程池中线程的任务就是不停的取出阻塞队列中的任务并执行
代码
//模拟实现线程池
class MyThreadPool{//实例化一个阻塞队列用来存储添加进线程池的任务private BlockingQueue<Runnable> queue=new LinkedBlockingQueue<>();public void submit(Runnable task) throws InterruptedException {queue.put(task);}//在实例化线程池时就应该实例化线程去处理阻塞队列中存储的任务//所以实例化线程的代码在构造方法中书写//n表示线程池中线程的数量public MyThreadPool(int n){for(int i=0;i<n;i++){//线程要执行的任务是不停取出阻塞队列中的任务进行执行Thread t=new Thread(()->{while(true){try {Runnable task=queue.take();task.run();} catch (InterruptedException e) {throw new RuntimeException(e);}}});t.start();}}}