olá pessoal
estou fazendo um servidor de chat (:P)aki para uma matéria do Cotuca, e como é servidor em que havera muitas desconexões seguidas de conexões, pensei em criar um Pool de Threads para otimizar o desempenho do servidor.
em vez de cada vez que um cliente se conectar ao servidor eu criar as threads nescessárias para isso, eu deixo um pool de threads para só criar threads qndo realmente não tiver nenhum thread criada que não esteja sendo usada
ai é só mudar os Input e Output streams da vida para utiliza-la novamente
eu fiz uma pseudoimplementação eu penso que é basicamente isso que eu preciso:
public class MessageListenerPoll {
Queue<MessageListener> poll;
public MessageListenerPoll()
{
poll = new LinkedBlockingQueue<MessageListener>();
}
public MessageListenerPoll(int maxElem)
{
poll = new LinkedBlockingQueue<MessageListener>(maxElem);
}
public void offer(MessageListener o) {
if (!poll.offer(o))
o = null;
}
public MessageListener poll() {
MessageListener messageListener = poll.poll();
if (messageListener == null)
messageListener = new MessageListener();
return messageListener;
}
}
minhas duvidas:
1 - esse é realmente o conceito de pools que vcs tem\que deve ser usado?
2 - se não, como eu devo implementar?
3- essa implementação de pool pode ter problemas com sincronização\deadlocks?
obrigado…