Это метод toPath() класса File (jdk7)Почему мы должны использовать переменную Темп в File.toPath() (jdk7)
private volatile transient Path filePath;
public Path toPath() {
Path result = filePath;
if (result == null) {
synchronized (this) {
result = filePath;
if (result == null) {
result = FileSystems.getDefault().getPath(path);
filePath = result;
}
}
}
return result;
}
Мне очень интересно, почему мы используем result
переменную как буфер. Почему мы не можем работать с файловым файлом. Я прочитал, что это проблема с производительностью, и мы можем иметь более высокую производительность при использовании переменной энергонезависимой памяти. Но я не понимаю, как мы можем получить эту производительность?
Может ли кто-нибудь прояснить это для меня, пожалуйста?
Но, как я понимаю здесь [Path result = filePath;], мы также читаем переменную volatile. Поэтому нам все равно нужно сначала прочитать изменчивость. Если я напишу, в чем смысл? –
, где мы можем избежать чтения или записи накладных расходов, если нам еще нужно сделать некоторое чтение, чтобы создать экземпляр переменной результата? –
Я имею в виду, что я понимаю, что волатильность памяти исключает кеш, и это ресурсоемкое. Но, с моей точки зрения, фактическое число чтения/записи прямой памяти не было изменено. –