E ai Henrique, pelo que eu imaginei tu ta com um design parecido com o esquema (em 
ASCIIART:) anexo. 

Tenta elaborar a seguinte logica(ja fiz um programa no mesmo estilo):

Na classe Main 
- cria um metodo listen onde teu ServerSocket vai ficar escutando novas requisicoes

- para cada accept (dentro de um loop infinito em listen)  cria uma nova instancia de 
Connection (que sera nada 
mais que uma classe com a implementacao de uma Thread com um socket para manter a 
comunicacao com o 
client). Este processo pode ser interpretado como um dispatch de requisicoes. No 
momento que tu criares uma 
nova Connection (Instanciando um novo Socket e uma nova Thread) tu adiciona esta 
connection na tua 
associacao  a classe HashMap.

Resumindo: delega o controle do Ciclo de Vida e a manipulacao da HashMap para a tua 
classe principal e cria um 
metodo publico para que uma Connection possa se remover ao termino do servico. Ha um 
forte Acoplamento  
entre os objetos, uma vez que connection precisa da reperencia a Main para que seja 
removida da HashTable.

Ainda estou pensando num meio pra diminuir o acoplamento...

Ja tentou a classe ThreadGroup?


On Mon, 17 Feb 2003 12:18:13 -0300, "Henrique" <[EMAIL PROTECTED]> escreveu :

> De: "Henrique" <[EMAIL PROTECTED]>
> Data: Mon, 17 Feb 2003 12:18:13 -0300
> Para: <[EMAIL PROTECTED]>
> Assunto: [enterprise-list] Threads
> 
>     Pessoal, estou implementando uma solução em Java que
> utiliza Threads, mas, me deparei com um problema ainda sem solução.
> 
>     Descrição, Simulação Problema:
> 
>         - existe uma classe principal, escutando numa porta qualquer
> (socket) esperando requisições (Daemon). Para toda requisição a esta classe
> principal, é levanta uma Thread que realiza uma determinada operação e é
> destruída;
> 
>         - na classe principal, existe um objeto Hashtable público, sua
> função é armazenar valores setados nas Threads que são levantadas. Dessa
> forma, nas Threads de acordo com a lógica do algorítmo, posso executar ADD
> ou REMOVE no Hashtable público.
> 
>         - o problema está exatamente em deixar esse Hashtable público, todas
> as vezes que levanto uma nova Thread, o Hashtable é inicializado, não
> consigo torná-lo público para as Threads.
> 
> 
>     Já tentei utilizar o Hashtable como público para todas as Threads, já
> tentei passá-lo por parâmetro(valor) para as Threads, já utilizei uma classe
> SingleTone e nada. Não testei passando por parâmetro(referência).
> 
>     Deu pra entender meu problema?    Preciso tornar o Hashtable
> inicializado na classe principal público para todas as Threads, observe que
> essas Threads manipulam o Hash e são destruídas devendo o Hash permanecer
> disponível com seu valor para as novas Threads que serão levantadas.
> 
> 
>     Henrique
> 
> 
> 
> ---------------------------------------------------------------------
> Para cancelar a subscri��o, envie mensagem para: 
>[EMAIL PROTECTED]
> Para comandos adicionais, envie mensagem para: [EMAIL PROTECTED]
> 
> 
> 
> 

<Padilha id="Nilseu">
Nilseu Perside Ortiz Padilha Junior
Desenvolvedor Java - J2EE
Immediate Consultoria e Sistemas
http://www.immediate.com.br
Ciencia da Computacao - ULBRA
<Quote>
Rejeitamos reis, presidentes e votos. Acreditamos em puro consenso e codigo eficiente. 
- Dave Clark
</Quote>
<Quote>
One exam does not a (J2EE) architect make. - Master Yoda
</Quote>
</Padilha>

+-----------+                               +---------------------+
| Main      | 1                          *  |Connection           |
+-----------+-------------------------------+---------------------+  - myThread
| listen()  |                               | Connection(Int Port)|<--------+ 
| diapatch()|<---------------+              | beginService()      |         |
| remove()  |  - myHash      |              +---------------------+      +-------+
+-----------+         +----------+                                       | Thread|
                      | HashTable|                                       +-------+
                      +----------+
---------------------------------------------------------------------
Para cancelar a subscri��o, envie mensagem para: 
[EMAIL PROTECTED]
Para comandos adicionais, envie mensagem para: [EMAIL PROTECTED]

Responder a