Java.io.File - canRead

Estou desenvolvendo uma aplicação em java e estou tendo que implementar concorrencia para o acesso a um determinado arquivo.

Eu pensei em criar um arquivo tranca, e sempre que uma das aplicações fosse acessar o recurso comum, ela criaria esse arquvo tranca. Ja a outra aplicação percebendo a existencia desse arquivo tranca esperaria x ms.

Isso é tranquilo de se fazer e era o que ja estava implementando. Só que ai eu lembrei do metodo canRead. Mas me veio a cabça o seguinte, se eu usar canRead o SO que cuidaria em “dizer” que o arquivo esta sendo escrito no momento e retornaria false ou ele só tentaria abrir o arquivo e caso conseguisse retornaria true?

Será que consego fazer o que quero com canRead ou terei que usar o arquivo de lock mesmo?

Alguem tem ideia melhor?

http://java.sun.com/javase/6/docs/api/java/nio/channels/FileLock.html

Beleza, gostei dessa FileLock, mas…

http://www.exampledepot.com/egs/java.nio/SetFileLock.html

“On some platforms, the file lock is advisory, which means that unless an application checks for a file lock, it will not be prevented from accessing the file. On other platforms, the file lock is mandatory, which means that a file lock prevents any application from accessing the file.”

Minha outra aplicação é em C, entao quando a minha aplicacao em java fizer um “channel.tryLock();” ela ira bloquear o acesso ao recurso da minha aplicação C? Ela não ira conseguir nem abrir o arquivo?

Essas 2 aplicações rodam tanto em Windows quanto em Linux