我看到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