首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >重用Runnable对象

重用Runnable对象
EN

Stack Overflow用户
提问于 2015-04-28 23:52:58
回答 1查看 1.5K关注 0票数 3

有没有办法让我并行运行固定的最大线程数,并在其中一个线程完成后立即重用Runnable对象?因此,给定Runnable obj的N组运行参数,并且只有M个Runnable对象(M < N),有没有办法确保一旦使用Runnable对象的一个线程完成,我就使用相同的Runnable obj启动一个新线程(因此一次最多运行M个线程)?

EN

回答 1

Stack Overflow用户

发布于 2015-04-29 00:00:37

您可以实现生产者-消费者模式,如下所示:

代码语言:javascript
复制
    int n = 10;
    Executor executor = Executors.newFixedThreadPool(n);
    final BlockingQueue<Object> tasks = new ArrayBlockingQueue(1024);
    for (int i = 0; i < n; i++) {
        executor.execute(new Runnable() {
            @Override
            public void run() {
                try {
                    while (!Thread.currentThread().isInterrupted()) {
                        Object task = tasks.take();
                        // process task
                    }
                } catch (InterruptedException e) {
                    Thread.currentThread().interrupt();
                }
            }
        });
    }
    tasks.put(new Object());
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29924120

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档