Erro estranho com java.io.File

E ae galera!

Bem…estou fazendo uma aplicação para enviar imagens a um servidor (é uma aplicação WEB, com JSF e RichFaces, mas o erro em sí não é com um dos frameworks em sí e sim com a classe File em sí). O problema é que algumas vezes quando eu tento deletar as imagens acontece um bug estranho.

primeiro eu vou postar o código do método em questão:

[code]public void deleteUploadedFile(ActionEvent event) throws Throwable {
UIComponent link = event.getComponent();
UIParameter param = (UIParameter) link.findComponent(“fileId”);
TheFile file = this.uploadedFiles.get((Integer) param.getValue());

    try {
        File f = new File(file.getPath(), file.getName());

        if ((f.exists()) && (f.canRead()) && (f.canWrite())) {
            if(f.delete()){
                for(int i=0; i<file.getThumbs().size(); i++){
                    File t1 = new File(file.getPath(), file.getThumbs().get(i).getThumbName());

                    t1.delete();
                }
                setDeleted(true);
            }
            else{
                setDeleteLog("Arquivo não pode ser excluido");
                setDeleted(false);
            }
        } else {
            setDeleteLog("Erro ao tentar excluir o arquivo");
            setDeleted(false);
        }
        this.finalize();
    } catch (Exception ex) {
        setDeleteLog("Deu erro: " + ex);
    } finally {
        if (this.deleted) {
            if (this.uploadedFiles.remove(file)) {
                setDeleteLog("Conseguiu remover");
            } else {
                setDeleteLog("Deu erro");
            }
        }
    }
}[/code]

O que ocorre é que quando a linha f(f.delete()) é executada, algumas vezes, acontece um bug estranho. Que é o seguinte…os dados do arquivo são apagados como esperado, mas o arquivo em si não. Por alguma razão o JAVA continua usando aquele arquivo, acontece algo que ele não consegue remover (a função delete de fato returna false) mas o algum método (que não de minha classe) continua usando o arquivo, mesmo depois de executar o finalize.

E pior, uma vez que acontece este bug, em todas as próximas tentativas de deleção acontece o mesmo bug.

Minha pergunta é…o que isto pode ser (o porque disto estar acontecendo) e como eu poderia resolver isto?! :?