По сути, вы хотите, чтобы запись в файл не прерывала ваш поток обработки событий.
В этом случае все, что вам нужно сделать, это делегировать обработку файла в отдельный поток.
Ваш код должен выглядеть примерно так:
// event handling starts
Runnable fileHandlingThread = new Runnable() {
public void run() {
// open the file
// write to the file
// flush the file
}
};
new Thread(fileHandlingThread).start();
// continue doing other things in the mean time