我正在使用Java 6.
调用createTempFile(类java.io.File)的两个线程是否可能获得相同的临时文件?
答案 0 :(得分:15)
获得答案的最佳方式是查看源代码。起初在createTempFile中没有任何同步,但是为了生成临时文件名,它使用的是SecureRandom,即ThreadSafe。 然后除非你真的不走运,否则你的文件总会得到一个不同的名字。
最重要的是,createTempFile实现正在循环,生成新文件名,直到创建文件。当然,文件创建委托给本机文件系统操作,我们可以假设它是线程安全的。
答案 1 :(得分:2)
File.createTempFile方法实际上创建了该文件。线程只返回它单独创建的文件名。 (您可以查看源代码以查看此内容)
答案 2 :(得分:0)
存在这样的可能性,但它是如此遥远,以至于考虑到这是浪费精力......如果应用程序需要担心这种维持其正常运行的可能性,那么我会将其视为有迹象表明存在用它的设计捕鱼的东西。