我正在使用Executorsevice從數據庫生成文件。我正在使用jdbc
和核心java
將表格數據存入文件。Java executorsevice正在關閉,即使它的線程正在運行
使用10個線程創建Executorservice後,我在for循環中提交60個線程以並行獲取60個文件。這對小數據和少數列的表格工作正常。但是,如果文件很大,並且對於具有更多列的表,正在處理巨大表數據/更多列表的線程正在停止,而在其他線程完成時不會在日誌中提供任何信息。
ExecutorService executor = Executors.newFixedThreadPool(THREAD_COUNT);
for (String filename : filenames) {
EachFileThread worker = new EachFileThread(destdir, converter,
filename, this);
executor.execute(worker);
}
executor.shutdown();
裏面Eachfilethread我讀取XML並獲得列,表,形成一個查詢,執行查詢和格式化的數據,並把數據轉換成文件
forTable = (FileData) converter.convertFromXMLToObject(filename + ".xml");
String query = getQuery(forTable);
statement = connection.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY);
resultSet = statement.executeQuery(query);
resultSet.setFetchSize(3000);
WriteData(resultSet, filepath, forTable);(formatting the data from db and then writing to a file)
添加您的代碼會幫助調試。 –
添加了代碼。 – vardhan
你可以添加你的EachFileThread代碼嗎? –