`
public void addStockHistoryData() {
StockCrawler sc = new StockCrawler();
ArrayList<String> codes = getAllStockCodes();
ExecutorService pool = Executors.newFixedThreadPool(100);
CompletionService<ArrayList<StockHistoryData>> cs = new ExecutorCompletionService<ArrayList<StockHistoryData>>(
pool);
for (int i = codes.size() - 1; i > 800; i--) {
String code = codes.get(i);
cs.submit(new Callable<ArrayList<StockHistoryData>>() {
@Override
public ArrayList<StockHistoryData> call() throws Exception {
System.out.println("getting " + code);
ArrayList<StockHistoryData> sd = sc.getHistoryData(code, "300");
Session s = sessionFactory.openSession();
s.beginTransaction();
for (StockHistoryData d : sd) {
s.saveOrUpdate(d);
}
s.getTransaction().commit();
s.close();
return sd;
}
});
}
`
这是多线程存数据的代码段,hibernate的show_sql设置为true,但是看到打印到某一句就停止执行了,也不报异常,怀疑是出现了死锁,但是不知道是什么操作可能导致这个问题?该怎么解决呢?