2015-05-12 60 views
0

大量的PDF文件所以,最後我需要寫一個UNIX服務器上的磁盤上的大量的PDF(40,000),我試圖找出一種方法來有效地做到這一點(更快/消耗更少的內存)。使用並行處理技術來產生UNIX

我一直使用JasperReports把創造出臨危作爲參數模板(意該報告並沒有擊中數據庫)需要對報告中的所有信息。

然後,我有一個查詢數據庫,並帶來了數據集,併爲每個記錄它填補了開發文件和PDF寫入磁盤一個簡單的Java應用程序。

現在,這工作得很好的記錄幾百,但我想,其中的數字擴展到40.000記錄和過程的輸出將同等數量的PDF文件也不會生產工作。做一些測試我估計這個過程至少需要3個小時,我也開始擔心內存消耗。

所以我想知道是什麼,如果有一個有效的方式來做到這一點:

  • 我應該使用並行/多線程這個過程?
  • 任何人都可以點我朝着knonw模式/例如這樣的工作嗎?

謝謝您的時間

+0

你說「快/少內存」。實現兩者往往是困難的。此外,請參閱指南[如何提出一個很好的問題(http://stackoverflow.com/help/how-to-ask) – screenmutt

+0

只是注意,多線程!=更快 – user489041

回答

0

可惜你不能使用較少的內存,並使用多線程來呈現不同的PDF文件,每個線程將分配內存在其PDF工作,內存使用量將線性的線程數。 如果您可以使用多個線程處理相同的PDF(相同數據),這是一個完全不同的故事,但我認爲這樣做不容易,因爲線程會需要頻繁的同步,從而使多線程無意義。

實現多線程如果不需要共享任何信息,你可以實現Runnable接口,創建新的線程通過Runnable的實現,並等待它們以Thread.join()結束,這將是微不足道的。

如果我是你,我會用jasper virtualizer來加載當時只有一部分數據集,這可能會允許你使用多個線程。

+0

是的,這是我落得這樣做但不是自己處理線程創建,而是使用本文中描述的ExecutoService http://stackoverflow.com/a/7966732/4524542。感謝您的回答,我會考慮處理大數據集的Jasper Virtualizer。 – gafemoyano