Hallo zusammen,
ich möchte eine Liste aller Dateien auf allen Laufwerken erstellen (unter Windows). Prinzipiell ist das soweit kein Problem, die Laufwerksbuchstaben bekomme ich über File.listRoots(). Von jeder Wurzel aus könnte ich dann rekursiv in die Verzeichnisse absteigen.
Jetzt hatte ich mir überlegt, das ganze mit Threads zu parallelisieren. Für jedes Laufwerk einen Thread erstellen, der mir das ganze in eine globale Liste einfügt, ist auch kein Problem.
Das Problem ist jetzt, dass ich beispielsweise 2 Festplatten habe, auf der ersten die Partitionen C: und D:, auf der zweiten die Partitionen E: und F:. Wenn ich nun 4 Threads laufen lasse, dann arbeiten die ersten beiden auf der selben physikalischen Festplatte. Ich vermute mal, dass das durch das ständige Hin- und Herspringen des Festplattenkopfes deutlich langsamer wird, als wenn ich erst C:, und danach D: verarbeite.
Ich suche also nach einer Möglichkeit herauszufinden, welche Laufwerksbuchstaben dem gleichen physikalischen Laufwerk zugeordnet sind. Im obigen Beispiel würde ich also 2 Thread erstellen, der erste verarbeitet zunächst C:, dann D:, der zweite beginnt zeitgleich mit E:, und liest im Anschluss F:.
Habe ich mit Java da eine Möglichkeit, das umzusetzen?
MfG Anub1s
ich möchte eine Liste aller Dateien auf allen Laufwerken erstellen (unter Windows). Prinzipiell ist das soweit kein Problem, die Laufwerksbuchstaben bekomme ich über File.listRoots(). Von jeder Wurzel aus könnte ich dann rekursiv in die Verzeichnisse absteigen.
Jetzt hatte ich mir überlegt, das ganze mit Threads zu parallelisieren. Für jedes Laufwerk einen Thread erstellen, der mir das ganze in eine globale Liste einfügt, ist auch kein Problem.
Das Problem ist jetzt, dass ich beispielsweise 2 Festplatten habe, auf der ersten die Partitionen C: und D:, auf der zweiten die Partitionen E: und F:. Wenn ich nun 4 Threads laufen lasse, dann arbeiten die ersten beiden auf der selben physikalischen Festplatte. Ich vermute mal, dass das durch das ständige Hin- und Herspringen des Festplattenkopfes deutlich langsamer wird, als wenn ich erst C:, und danach D: verarbeite.
Ich suche also nach einer Möglichkeit herauszufinden, welche Laufwerksbuchstaben dem gleichen physikalischen Laufwerk zugeordnet sind. Im obigen Beispiel würde ich also 2 Thread erstellen, der erste verarbeitet zunächst C:, dann D:, der zweite beginnt zeitgleich mit E:, und liest im Anschluss F:.
Habe ich mit Java da eine Möglichkeit, das umzusetzen?
MfG Anub1s