java-指定要添加到ExecutorService的可运行对象的限制

我知道我可以使用以下方式指定固定线程池大小

ExecutorService executor = Executors.newFixedThreadPool(10);

我可以将可运行对象添加到执行程序中,并且只要线程在池中空闲,它们就会执行

executor.execute(Obj);

我想限制要添加到执行程序服务的对象数,即如果我有100个可运行对象,则线程池大小为10,并且只有20个必须添加到ExecutorService中,其余部分必须被拒绝.

我想为执行程序创建一个固定大小的等待列表,以便与其添加所有100个对象并使它们保持等待状态,不如将所有项目保持固定的等待状态

我通过了Executor和ExecutorService API,但是找不到任何这样的东西,只是想知道这是否可行?

解决方法:

查看ThreadPoolExecutor的构造函数.您可以为执行者提供一个有界队列和拒绝策略.拒绝策略告诉执行者,当您尝试提交超出其处理能力的任务时该怎么做.

例:

ExecutorService executor =
    new ThreadPoolExecutor(N_THREADS, N_THREADS, 0L, TimeUnit.MILLISECONDS,
        new LinkedBlockingQueue<Runnable>(CAPACITY),
        new ThreadPoolExecutor.CallerRunsPolicy());
上一篇:线程池的优点及其原理


下一篇:使用ExecuterService的多个SwingWorkers无法正常工作