Я не думаю, что поведение Java5 является серьезной проблемой.
Рассмотрим ОС, которая связывает блокировку файла с процессом. Если процесс уже владеет блокировкой файла, при повторном запросе блокировки ОС может предоставить его без ошибок. Это «входящий» замок в некотором смысле. Он не позволяет двум процессам блокировать один и тот же файл одновременно, и процесс должен убедиться, что, когда у него есть блокировка, у него нет двух потоков, делающих некоторые перекрывающиеся изменения в файле.
В JVM обычно есть много независимых пакетов, должны быть случаи, когда два пакета пытаются заблокировать один и тот же файл. Если им всем предоставят блокировку, у нас проблема. Трудно попросить два независимых пакета каким-либо образом взаимодействовать, поэтому Java6 сокращает владение всем процессом до канала. (надеюсь, два пакета не будут использовать один и тот же канал)
Тем не менее, такие случаи использования, вероятно, не очень распространены. Обычно файл имеет какой-то особый вид, который будет обрабатываться только определенным пакетом. Представьте себе пакет базы данных, его файлы вряд ли будут затронуты другими пакетами в той же JVM, но могут быть затронуты тем же пакетом в других JVM. Так что в этом случае поведение Java5 будет нормальным, и таких случаев, вероятно, большинство.