【发布时间】:2015-07-21 11:14:24
【问题描述】:
我正在使用static 块在我的名为App1 的Java 应用程序中加载properties file
public class Configuration{
static {
System.out.println("static ");
PropertyConfigurator.configure("./TwitterLog4j.properties");
log = Logger.getLogger(Configuration.class.getName());
configProp = new Properties();
try {
configProp.load(Configuration.class.getClassLoader().getResourceAsStream("TwitterConfig.properties"));
} catch (IOException e) {
throw new RuntimeException("TC100: Unable to load the connector configuration file. Configuration file is missing or is invalid.");
}
CONSUMER_KEY = configProp.getProperty("APPKEY");
CONSUMER_SECRET = configProp.getProperty("APPSECRET");
}
}
在创建App1 的jar 之后,我在App2 中使用它,我使用线程(Executors.newFixedThreadPool(10)) 通过调用ConnWrapper 类的方法来运行App1(参见下面的流程)。但是我的静态块似乎只运行一次,即使我的App1 完成,JVM 是否也会保持类的加载?
App1的课堂流程
ConnWrapper Class --> Conn Class --> ConnInterface Class --> Configuration Class
*( --> = calls method of)
【问题讨论】:
-
静态块保证在JVM加载类时只运行一次。你的问题和期望不清楚,你想达到什么目标?
标签: java multithreading static