Eu tenho um processo Java que abre um arquivo usando um FileReader. Como posso impedir que outro processo (Java) abra esse arquivo ou, pelo menos, notifique esse segundo processo que o arquivo já está aberto? Isso faz automaticamente o segundo processo obter uma exceção se o arquivo estiver aberto (o que resolve meu problema) ou eu tenho que abri-lo explicitamente no primeiro processo com algum tipo de sinalizador ou argumento?
Esclarecer:
Eu tenho um aplicativo Java que lista uma pasta e abre cada arquivo na listagem para processá-lo. Ele processa cada arquivo após o outro. O processamento de cada arquivo consiste em lê-lo e fazer alguns cálculos com base no conteúdo, e leva cerca de 2 minutos. Eu também tenho outro aplicativo Java que faz a mesma coisa, mas que grava no arquivo. O que eu quero é poder executar esses aplicativos ao mesmo tempo, para que o cenário seja assim. O ReadApp lista a pasta e localiza os arquivos A, B, C. Ele abre o arquivo A e inicia a leitura. O WriteApp lista a pasta e localiza os arquivos A, B, C. Ele abre o arquivo A, vê que está aberto (por uma exceção ou de qualquer maneira) e vai para o arquivo B. ReadApp termina o arquivo A e continua para B. Ele vê que está está aberto e continua até C. É crucial que o WriteApp não Não escreva enquanto o ReadApp está lendo o mesmo arquivo ou vice-versa. São processos diferentes.