2016-09-08 4 views
1

Ich bin in Java, aber ich denke, es ist ein allgemeines Problem außerhalb von Java.Erstellen von Verzeichnissen mit mehreren Threads

Ich möchte wissen, ob es sicher ist, Verzeichnisse mit mehreren Threads zu erstellen.

In Java kann ich new File(...).mkdirs() verwenden, um Verzeichnisse zu machen.

Was passiert, wenn zwei Threads new File(...).mkdirs() (fast) gleichzeitig ausführen? genau

Mehr,

Thread 1 führt new File("%ROOT%/a/b/c/d).mkdirs();

und

Thema 2 new File("%ROOT%/a/b/c/e).mkdirs();

Ist diese Situation sicher ist oder nicht ausführt?

Wenn nicht, welche Probleme können auftreten?

Vielen Dank für Ihre Hilfe im Voraus!

+2

Es ist sicher, aber eine (nicht-SSD) Festplatte kann nur an einen Ort gleichzeitig schreiben, so dass der Plattenzugriff nicht parallelisiert wird. Sie werden wahrscheinlich nicht viel von einem Leistungsgewinn sehen. Auch [die Klasse java.io.File ist veraltet;] (http://java7fs.wikia.com/wiki/Why_File_sucks) sollten Sie [Files.createDirectories] (http://docs.oracle.com/javase /8/docs/api/java/nio/file/Files.html#createDirectories-java.nio.file.Path-java.nio.file.attribute.FileAttribute...-) stattdessen. – VGR

Antwort

1

Es ist sicher.

Das Betriebssystem erstellt einfach die Verzeichnisse aus den Anweisungen sieht es als das erste und dann nur die fehlenden Verzeichnisse aus dem zweiten erstellen.

Sie haben gerade keine Garantie, auf dem Verzeichnisse zuerst erstellt werden, aber die Anweisungen gleichzeitig laufen Sie wahrscheinlich interessieren sich nicht!

+0

Also muss ich mich um nichts kümmern? –

+0

Nein, solange dein Betriebssystem vertrauenswürdig ist ;-) –

Verwandte Themen