From: kruland2607 Date: Fri, 11 May 2012 03:21:27 +0000 (+0000) Subject: Switch to a LinkedBlockingQueue in front of the loader thread pool because it elimina... X-Git-Tag: upstream/12.09^2~281 X-Git-Url: https://git.gag.com/?a=commitdiff_plain;h=82a3af1f94d3a6ec03ef68c3c7a01c7a4321d193;p=debian%2Fopenrocket Switch to a LinkedBlockingQueue in front of the loader thread pool because it eliminates RejectedExecutionExceptions. The down side is the generator will block when the queue is full. Oh well. git-svn-id: https://openrocket.svn.sourceforge.net/svnroot/openrocket/trunk@667 180e2498-e6e9-4542-8430-84ac67f01cd8 --- diff --git a/core/src/net/sf/openrocket/startup/ConcurrentLoadingThrustCurveMotorSetDatabase.java b/core/src/net/sf/openrocket/startup/ConcurrentLoadingThrustCurveMotorSetDatabase.java index 3f6e9fcb..0a12605b 100644 --- a/core/src/net/sf/openrocket/startup/ConcurrentLoadingThrustCurveMotorSetDatabase.java +++ b/core/src/net/sf/openrocket/startup/ConcurrentLoadingThrustCurveMotorSetDatabase.java @@ -6,14 +6,15 @@ import java.io.InputStream; import java.util.List; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; +import java.util.concurrent.LinkedBlockingQueue; import java.util.concurrent.ThreadFactory; +import java.util.concurrent.ThreadPoolExecutor; import java.util.concurrent.TimeUnit; import net.sf.openrocket.database.ThrustCurveMotorSet; import net.sf.openrocket.database.ThrustCurveMotorSetDatabase; import net.sf.openrocket.file.iterator.DirectoryIterator; import net.sf.openrocket.file.iterator.FileIterator; -import net.sf.openrocket.file.motor.GeneralMotorLoader; import net.sf.openrocket.file.motor.MotorLoaderHelper; import net.sf.openrocket.gui.util.SimpleFileFilter; import net.sf.openrocket.gui.util.SwingPreferences; @@ -131,7 +132,9 @@ public class ConcurrentLoadingThrustCurveMotorSetDatabase extends ThrustCurveMot } }); - loaderPool = Executors.newFixedThreadPool(25, new ThreadFactory() { + loaderPool = new ThreadPoolExecutor(25,25, 2, TimeUnit.SECONDS, + new LinkedBlockingQueue(), + new ThreadFactory() { int threadCount = 0; @Override public Thread newThread(Runnable r) {