Запустите код, который у вас есть, в потоке (имя сервера в коде ниже), а затем запустите другой поток, подобный этому, для прерывания, когда вы хотите выйти:
Thread server = {the one you have};
Thread timeout = new Thread() {
public void run() {
long end = start + 10 * 1000;
try {
Thread.sleep(end);
} catch (InterruptedException e) {
//handle this
}
server.interrupt();
}
}
timeout.start();
Сокет.accept теперь выдаст InterruptedException и пропустит весь ваш другой код.