我有一個場景,網絡歸檔文件(warc)被一個爬蟲週期性地放在不同的目錄中。每個warc文件內部由數千個HTML文件組成。如何同時處理多個文件?
現在,我需要構建一個框架來有效地處理這些文件。我知道Java並沒有按照I/O的並行處理進行擴展。我在想的是有一個監視線程掃描此目錄,選擇文件名並放入一個Executor服務或一些Java阻塞隊列。一堆工作線程(可能是I/O問題的一小部分)在執行程序服務下進行偵聽,將讀取這些文件,讀取其中的HTML文件並進行相應的處理。這是爲了確保線程不會爭奪相同的文件。
這是在性能和可擴展性方面的正確方法嗎?另外,如何處理文件一經處理?理想情況下,文件應該被移動或標記,以便它們不會被線程再次拾取。這可以通過Future對象來處理嗎?
感謝您的答覆。這可能有助於確定新文件是否已放入目錄,但這並不能真正解決我的問題。根據要求,我需要將這些文件處理後移動到一個歸檔文件夾。我可以在工作完成後讓工作線程移動文件,但需要通知主線程。原因是,如果工作進程發生故障,需要重新嘗試重新嘗試該文件。 – Shamik
@ simeon..this功能在jdk 7中可用,但我仍然在jdk 6中。在做一些研究時,我發現了一個名爲jpathwatch的類似庫,它提供了類似的功能。我將檢查它。感謝指針。 – Shamik