Java 在循环期间暂停

标签 java loops swingworker

我正在运行一个 for 循环,并且在每次迭代时,我都会在后台执行一个 SwingWorker(持续大约 5 分钟)。 我有一个属性是同时在后台运行的Worker的数量。

for 循环有 100 次迭代,但我只想同时运行 5 个 SwingWorker。如果同时运行的工作线程数量超过 5,如何暂停循环迭代?当它变低时我怎样才能恢复它?

谢谢。

最佳答案

通常我使用具有 5 个线程的 ExecutionService 来执行此操作。但您可以使用这样的信号量。

 final Semaphore permits = new Semaphore(5);
 for(int i=0;i<100;i++) {
     permits.acquire();
     // add a task
 }



 // in the SwingWorker
 public String doInBackground() {
     try {
        return findTheMeaningOfLife();
     } finally {
        permits.release();
     }
 }

关于Java 在循环期间暂停,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8802692/

相关文章:

java - 如何使用 java Selenium WebDriver 下载文件?

ruby-on-rails - Ruby on Rails 中的循环内循环

java - 如何在*没有*忙等待的情况下读取 SwingWorker 的结果?

java - 防止 Swing GUI 在后台任务期间锁定

Java - 如何将 JProgressBar 与 SwingWorker 一起使用

java - Android 将 tm(商标)符号添加到文本

java - 让代码尝试不同的事情直到成功

java - 从 Java 中的 void 方法返回值

java - Arduino 循环中断

c# - 尽管解析字节数据时出错,如何继续循环