2014-09-07 6 views
5

Voglio leggere e analizzare molti file. Poiché ci sono oltre 10000 file che devono essere analizzati, voglio rendere questo processo più veloce facendo uso di thread.Come posso utilizzare il multi-threading Java per leggere da più file?

Ad esempio, se avessi 5 thread, voglio che tutti leggano un certo numero di file contemporaneamente in modo che il processo di lettura e analisi sia più veloce. È possibile? Otterrei una significativa accelerazione suddividendola in thread? Se è così, come posso fare questo?

P.S. Non sono contrario all'uso di librerie esterne.

Sto lavorando con JDK 1.6

+0

"tutti i thread per leggere un file contemporaneamente, in modo che ogni thread abbia finito per analizzare 2 file" Che cosa significa? Vuoi due thread per leggere lo stesso file o un thread per leggere due file? –

+0

@ Descrizione codice apprendista aggiornata. Significa che hai 10 file e 5 discussioni con te. Ora vuoi che ogni thread analizzi simultaneamente un file separato. Spero di essere chiaro – Mimanshu

+1

Non esagerare con il numero di thread. Ricorda che il disco fisso non è multithread. – EJP

risposta

0

Vedere How to read all lines of a file in parallel in Java 8 per la lettura di un file in parallelo.

Nel tuo caso, vorrei avviare un pool di thread con il numero di thread consentito dal processo, ciascuno con una richiesta di "lettura dell'intero file" per un file assegnato e consentire al sistema operativo di decidere quale file da leggere in quale ordine.

1

Se si dispone di molti file da leggere, l'approccio migliore consiste nell'avere non più di un thread per leggere ciascun file. E il modo migliore di gestire molte attività con più thread, nella maggior parte dei casi, è utilizzare un ExecutorService che utilizza un pool di thread. Invia un'attività al servizio per ogni file da leggere. Rendere il pool di thread abbastanza grande da mantenere occupato il sistema I/O (che è probabile che sia il collo di bottiglia) e ottimizzare le prestazioni.

Problemi correlati