我想用我定义的属性初始化同步静态单例线程池执行器。
我希望它在整个应用程序中都可用,并且应该在服务器重新启动或停止时被销毁。
public class ThreadPoolExecutor extends java.util.concurrent.ThreadPoolExecutor {
private static Properties properties;
static {
try {
properties.load(ThreadPoolExecutor .class.getClassLoader().getResourceAsStream("config.properties"));
} catch (IOException e) {
e.printStackTrace();
}
}
static final int defaultCorePoolSize = Integer.valueOf((String) properties.get("CORE_POOL_SIZE"));
static final int defaultMaximumPoolSize = Integer.valueOf((String) properties.get("MAX_POOL_SIZE"));
static final long defaultKeepAliveTime = Integer.valueOf((String) properties.get("KEEP_ALIVE_TIME"));
static final TimeUnit defaultTimeUnit = TimeUnit.MINUTES;
static final BlockingQueue<Runnable> workQueue = new LinkedBlockingQueue<Runnable>();
private static ThreadPoolExecutor instance;
private ThreadPoolExecutor() {
super(defaultCorePoolSize, defaultMaximumPoolSize, defaultKeepAliveTime, defaultTimeUnit, workQueue);
}
synchronized static ThreadPoolExecutor getInstance() {
if (instance == null) {
instance = new ThreadPoolExecutor();
}
return instance;
}
这就是我到目前为止所做的(我是多线程的新手)。
由于我的应用程序完全基于多线程,我如何在这里实现我的要求和任何需要改进的地方!正如我所说,我如何在整个应用程序中维护/使其可用。