crei una classe apposita, ecco un esempio scritto di sfuggita:

codice:
...
class Server extends Thread {

public void run() {
ServerSocket ss = new ServerSocket(9999);
Socket client = ss.accept();
BufferedReader br = new BufferedReader(new
 InputStreamReader(client.getInputStream()));
BufferedWriter bw = new BufferedWriter(new 
OutputStreamWriter(client.getOutputStream()));
String str = br.readLine();
while(str != null && !(str.equals("QUIT")) {
if(str.equals("AGISCI")) {
System.exit(0);
}
str = br.readLine();
}
}

}

Server() {
start();
}

}
E quando vuoi farla partire chiami il costruttore

Server server = new Server();

dentro c'è il metodo start che farà partire il contenuto di run in un altro thread semparato permettendo di ascoltare i dati in arrivo senza bloccare il resto del programma.