estava vendo um tutorial sobre conexão por socket, o interessante do tutorial era que podia adicionar mais de um client usando thread, como ultimamente só tenho acessado pelo celular não lembro aonde vi esse tutorial.
mas em fim, minha dúvida apareceu quando para iniciar um novo usuário ele chamou uma thread da seguinte forma
ClasseServidor nUser = new Thread()
detalhe que a classe principal extendia Thread
a minha dúvida foi o que o programa entende sobre isso?
seria algo com “inicie tudo de novo como se tivesse aberto outra janela, mas em uma nova thread”
outra dúvida, todo servidor que suporta mais de um client funciona dessa maneira ou existe outras formas?
como to jogo com 1000 usuários online, para conexão dele é criada 1000 thread?
Sim, acredito ser o único jeito…
A cada conexão, uma nova thread será criada
[quote=yschmitzz]
como to jogo com 1000 usuários online, para conexão dele é criada 1000 thread?[/quote]
Não, isso é inviável. O que normalmente se faz é criar 1000 objetos (cada qual correspondente a um usuário) que são tratados por um pool de threads (digamos umas 5 ou 6 threads, no máximo - processamento de jogos online normalmente é muito baixo por usuário, então não é preciso ter muitas threads.
http://docs.oracle.com/javase/6/docs/api/java/util/concurrent/ThreadPoolExecutor.html
Além disso, mesmo que um socket seja reservado para cada usuário, pode-se usar um recurso ( Selector ) que faz com que não seja necessário reservar uma thread para cada socket. Você pode atender 1000 sockets com umas poucas threads (digamos 5 ou 6).
http://docs.oracle.com/javase/6/docs/api/java/nio/channels/SelectableChannel.html