Является ли createTempFile потокобезопасным? - PullRequest
4 голосов
/ 16 января 2011

Я использую Java 6.

Возможно ли, чтобы два потока, вызывающие createTempFile (класса java.io.File), получили один и тот же временный файл?

Ответы [ 3 ]

16 голосов
/ 16 января 2011

Лучший способ получить ответ - взглянуть на исходный код. Сначала нет никакой синхронизации в createTempFile, но для генерации имени временного файла он использует SecureRandom, который является ThreadSafe. Тогда, если вам не повезет, ваш файл всегда будет иметь другое имя.

Кроме того, реализация createTempFile зацикливается, генерируя новое имя файла, пока файл не будет создан. Разумеется, создание файла делегировано операции с файловой системой, которая, как мы можем предположить, является потокобезопасной.

2 голосов
/ 16 января 2011

Метод File.createTempFile фактически создает файл. Поток вернет только имя файла, которое он создал один. (Вы можете проверить исходный код, чтобы увидеть это)

0 голосов
/ 23 февраля 2011

Возможность существует, но она настолько далека, что, учитывая, что это пустая трата усилий ... и если приложению нужно беспокоиться об этой возможности для поддержания ее правильного функционирования, я бы воспринял это как признак того, что существует что-то рыболовное со своим дизайном.

...