模拟实现线程池

关于JAVA标志库创建线程池推荐看通过标准库创建线程池

核心思路

        实现一个submit方法,让用户传入要执行的任务,在线程池内部,将用户传入的任务存储到阻塞队列中,根据用户实例化线程池时传入的参数,知道线程池中线程的数量,在构造方法中循环创建并启动线程,线程池中线程的任务就是不停的取出阻塞队列中的任务并执行

代码

//模拟实现线程池
class MyThreadPool{
    //实例化一个阻塞队列用来存储添加进线程池的任务
    private BlockingQueue queue=new LinkedBlockingQueue<>();

    public void submit(Runnable task) throws InterruptedException {
        queue.put(task);
    }

    //在实例化线程池时就应该实例化线程去处理阻塞队列中存储的任务
    //所以实例化线程的代码在构造方法中书写
    //n表示线程池中线程的数量
    public MyThreadPool(int n){
        for(int i=0;i{
                while(true){
                    try {
                        Runnable task=queue.take();
                        task.run();
                    } catch (InterruptedException e) {
                        throw new RuntimeException(e);
                    }
                }
            });

            t.start();
        }
    }

}

你可能感兴趣的:(java,算法,数据结构)