7 Stimmen

Java-Multithreading beim Lesen einer einzelnen großen Datei

Was ist eine effiziente Methode für eine Java-Multithreading-Anwendung, bei der viele Threads genau dieselbe Datei (> 1 GB groß) lesen und als Eingabestrom bereitstellen müssen? Ich habe festgestellt, dass das System bei vielen Threads (> 32) beginnt, sich um die E/A zu streiten und eine Menge E/A-Wartezeiten hat.

Ich habe in Erwägung gezogen, die Datei in ein Byte-Array zu laden, die von allen Threads geteilt wird - jeder Thread würde ein ByteArrayInputStream erstellen, aber die Zuweisung eines 1 GB Byte-Arrays wird einfach nicht gut funktionieren.

Ich habe auch in Erwägung gezogen, mit einem einzigen FileChannel und jeder Thread erstellen einen InputStream oben auf es mit Channels.newInputStream(), jedoch scheint es, dass es der FileChannel, die den Zustand für den InputStream verwaltet.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X