Oi gente, estou com o seguinte problema:
Tenho um método de gravação de log que é acessado por um versionador. De vez em quando surge a seguinte mensagem de erro no console do versionador:
C:\Versionador\Logs\nomeDoArquivo.log(The process cannot access the file because it is being used by another process)
Isso provavelmente acontece quando outro usuário de outra console faz um procedimento que acessa esse mesmo arquivo de log e coincide de estar no meio de uma gravação.
Gostaria de saber se tornando esse método sincronizado resolveria o problema, pois sendo sincronizado, o método seria acessado somente após quem o estiver acessando terminar a execução.
Mas, quando outro processo tentar acessá-lo, ele ficará aguardando o término da execução para ser liberado o acesso ao método sincronizado?
Eu sei que poderia fazer os testes, mas gostaria da opinião dos mais experientes em Java e se essa é a melhor solução para esse caso.
Segue o método de gravação.
private int GravaLog(Date data, String data) throws Exception{
int retorno = 0;
try {
File install = new File("C:\\Versionador\\Logs\\nomeDoArquivo" + data + ".log");
BufferedWriter installData = new BufferedWriter(new FileWriter(install,true));
installData.write("\r\n");
installData.write("Dados a serem gravados");
installData.write("Dados a serem gravados");
installData.close();
}
catch(Exception err) {
retorno = 0;
System.err.println(err.getMessage());
}
return retorno;
}
Agradeço a ajuda.