Olá galera,
tentei substituir o código da classe ServerTerminal, aonde tem as instâncias de 5 threads, por um pool de threads, utilizando o newCachedThreadPool(), no entanto só dá certo com o 1º terminal do cliente que conectar.
Aí eu tinha substituído as instâncias das 5 threads abaixo por esse código aqui
ServerTerminal t = new ServerTerminal();
ExecutorService executor = Executors.newCachedThreadPool();
executor.execute(t);
Alguém sabe a solução para que fique um pool ilimitado de threads?
public class ServerTerminal extends Thread {
public void run() {
try {
IServiceManagerServerFactory factory = Service.createServiceManagerServerFactory();
IServiceManagerServer manager = factory.createServiceManagerServer();
manager.conectarAoServidor();
System.out.println("Nova conexao com o cliente.");
ListenRequestRunnable t = new ListenRequestRunnable(manager);
t.start();
ResponseRequestRunnable t2 = new ResponseRequestRunnable(manager);
t2.start();
} catch (InvalidConnectionPort p) {
System.out.println(p.getMessage());
} catch (ClosedServerConnectionException csce) {
System.out.println(csce.getMessage());
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
try {
Thread.currentThread().setName("main");
ServerTerminal t = new ServerTerminal();
ServerTerminal t2 = new ServerTerminal();
ServerTerminal t3 = new ServerTerminal();
ServerTerminal t4 = new ServerTerminal();
ServerTerminal t5 = new ServerTerminal();
t.setName("t1");t2.setName("t2");t3.setName("t3"); t.start();t2.start();t3.start();t4.start();t5.start();
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
}