我看到new File("path")
沒有物理地在磁盤上創建文件。雖然在API中據說:File實例線程安全嗎?
這個類的實例可以或可以不表示實際的文件系統 對象,如文件或目錄。如果它確實表示這樣一個對象,那麼該對象駐留在一個分區中。分區是文件系統的特定於操作系統的存儲部分。單個存儲設備(例如物理磁盤驅動器,閃存,CD-ROM)可以包含多個分區。
所以我很好奇,如果它是安全的在多線程環境下這樣的代碼:
File file = new File("myfile.zip");
// do some operations with file (fill it with content)
file.saveSomewhere(); // just to denote that I save it after several operations
例如,線程1來到這裏,創建一個實例並開始執行操作。同時thread2中斷它,使用相同的名稱(myfile.zip)創建它的實例並執行一些其他操作。之後,他們因此保存該文件。
我需要確定它們不能使用同一個文件,最後一個保存文件的線程會覆蓋前一個文件。
你的問題很混亂 - 你想最後一個線程覆蓋文件嗎? – tddmonkey
不是線程安全的。 –
我只需要一個線程的更改才能應用。這意味着我不想擁有一個文件,其中前半部分由第一個線程創建,第二個半部分由第二個線程創建。 – Scadge