do not spawn lots of threads

This commit is contained in:
Eugene Zhuravlev
2012-05-24 21:31:23 +02:00
parent 3949760db7
commit 836a7e1644
2 changed files with 8 additions and 2 deletions
@@ -11,7 +11,7 @@ import java.util.concurrent.atomic.AtomicBoolean;
* @author Eugene Zhuravlev
* Date: 9/24/11
*/
public class SequentialTaskExecutor {
public class SequentialTaskExecutor implements Executor {
private final Executor myExecutor;
private final Queue<FutureTask> myTaskQueue = new LinkedBlockingQueue<FutureTask>();
private final AtomicBoolean myInProgress = new AtomicBoolean(false);
@@ -36,6 +36,11 @@ public class SequentialTaskExecutor {
myExecutor = executor;
}
@Override
public void execute(Runnable task) {
submit(task);
}
public RunnableFuture submit(Runnable task) {
final FutureTask futureTask = new FutureTask(task, null);
if (myTaskQueue.offer(futureTask)) {
@@ -1,6 +1,7 @@
package org.jetbrains.jps.incremental;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.jps.api.SequentialTaskExecutor;
import org.jetbrains.jps.api.SharedThreadPool;
import org.jetbrains.jps.incremental.java.JavaBuilder;
import org.jetbrains.jps.incremental.resources.ResourcesBuilder;
@@ -15,6 +16,6 @@ public class JavaBuilderService extends BuilderService {
@NotNull
@Override
public List<? extends ModuleLevelBuilder> createModuleLevelBuilders() {
return Arrays.asList(new JavaBuilder(SharedThreadPool.INSTANCE), new ResourcesBuilder());
return Arrays.asList(new JavaBuilder(new SequentialTaskExecutor(SharedThreadPool.INSTANCE)), new ResourcesBuilder());
}
}