Pausa em Thread com loop infinito

Pessoal

Fiz para a faculdade, uma aplicação que transfere arquivos entre dois computadores (ambos, usando a mesma aplicação), através de Sockets.

Está tudo funcionando, porém, quero fazer uma “frescurinha” que estou em dúvida de como fazer.

Tenho uma classe Servidor, que implementa Runnable e tem um ServerSocket. O servidor fica aguardando por conexões em uma Thread separada, com um loop infinito, pra ficar sempre aguardando. Resumindo, é assim:

    public void run() {
        appendLog("iniciado na porta " + PORTA);
        appendLog("ouvindo na porta " + PORTA);
        while (true) {
            try {
                sincroniza.acquire();                
                while (recebendo) {
                    try {
                        wait();
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
                
                try {
                    client = server.accept();
                    appendLog("cliente " + client.getRemoteSocketAddress() + "conectado");
                    recebeDados();
                    client.close();
                    this.recebendo = false;
                } catch (IOException e) {
                    e.printStackTrace();
                }
                sincroniza.release();
            } catch (InterruptedException ex) {
                
            }
        }
    }

Porém, sempre que um cliente tenta enviar um arquivo pro servidor, o arquivo é aceito e salvo automaticamente. O que eu quero é que, quando um cliente conectar e tentar enviar um arquivo, o servidor aguarde por uma confirmação do usuário, se deseja aceitar ou não o arquivo, bem como, onde deseja salvá-lo.

Tentei fazer algo do tipo:

                while (aguardandoAutorizacao) {
                    try {
                        wait();
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }

Logo que o cliente conecta, mas assim, sempre dá uma InterruptedException.

Alguém tem uma idéia de como posso fazer isto?

O objeto sincroniza é apenas um Semaphore, para sincronizar este bloco de código, para que apenas um arquivo seja recebido por vez.

Caso não gostem de algo no código ou tenham melhorias para sugerir, serão bem vindas, também.

Grato