Como faço pra saber quando um arquivo foi modificado?

olá pessoal. estou tentando fazer uma classe que leia as mensagens de um arquivo de log do tightvnc, pra saber quem se conectou ou quem desconectou.
então vi duas soluções:
1ª - verificar de tempos em tempos a última modificação do arquivo
2ª - criar um método nativo e usá-lo via JNI. não intendi mt bem, mas e acho que devo ter um listener no codigo java, e o código nativo deve mandar um evento quando o arquivo for modificado.

o que me aconselham fazer? eu acho que como é apenas um arquivo nao terá problemas se usar a primeira opção. ou terá? já tive de usar JNI uma vez e me deu uma dor de cabeça doida.

Use a primeira opção. A segunda não é trivial nem em C/C++; isso é relativamente fácil em .NET (C#) porque isso já está bem encapsulado.

entao tenho de fazer uma thread que verifique se foi modificado não é?
nunca usei thread e tenho certo receio de usar pois pode causar algum dead lock, ou não?
e qual o tempo aconselhável pra eu verificar o arquivo?