Chat com Thread

Pessoal é o seguinte. Não sou usuário tão aançado em Java ainda estou em constante estudo mas vamos lá ;p
Estou começando a criae e entender um chat cliente/servidor e tenho já de cara uma dúvida que não deve ser tão fácil assim.
Estou me baseando em um exemplo simples que peguei na Web. Como eu faria para esse exemplo abaixo trabalhar com conexões simultâneas alguem saberia me responder ? Me indicar algum tutorial ou página enfim ou sabe de algum codigo free que eu possa estudar. Qualquer ajuda com certeza é sempre bem vinda. Pretendo a partir do código abaixo entender o trabalho das Threads e ai desenvolver algo bem legal :wink:

Segue CLIENTE.JAVA
#################################################
import java.io.IOException ;
import java.io.PrintStream ;
import java.net.Socket ;
import javax.swing.* ;

public class Cliente
{

  public static void main ( String[] args )
  {

        //Declaro o socket cliente
        Socket s = null ;
        
        //Declaro a Stream de saida de dados
        PrintStream ps = null ;

        try
        {               

              //Cria o socket com o recurso desejado na porta especificada
              s = new Socket ( "127.0.0.1" , 7000 ) ;
              
              //Cria a Stream de saida de dados
              ps = new PrintStream ( s.getOutputStream () ) ;

              //Imprime uma linha para a stream de saída de dados
              //ps.println ( "Estou enviando dados para o servidor" ) ;
              ps.println ( JOptionPane.showInputDialog("Dados") ) ;

              //Trata possíveis exceções
        }
        catch ( IOException e )
        {

              System.out.println (
                    "Algum problema ocorreu ao criar ou enviar dados pelo socket." ) ;

        }
        finally
        {

                              try
                               {

                                     //Encerra o socket cliente
                                     s.close () ;

                               }
                               catch ( IOException e )
                               {}

        }
  }

}
###############################################

SEGUE SERVIDOR.JAVA

import java.io.BufferedReader ;
import java.io.IOException ;
import java.io.InputStreamReader ;
import java.net.ServerSocket ;
import java.net.Socket ;

public class Servidor
{
public static void main ( String[] args )
{

        //Declaro o ServerSocket
        ServerSocket serv = null ;

        //Declaro o Socket de comunicação
        Socket s = null ;

        //Declaro o leitor para a entrada de dados
        BufferedReader entrada = null ;

        try
        {

              //Cria o ServerSocket na porta 7000 se estiver disponível
              serv = new ServerSocket ( 7000 ) ;

              //Aguarda uma conexão na porta especificada e cria retorna o socket que irá comunicar com o cliente
              System.out.println("Estou aguardando uma conexão ...");
              s = serv.accept () ;


              //Cria um BufferedReader para o canal da stream de entrada de dados do socket s
              entrada = new BufferedReader ( new InputStreamReader ( s.
                    getInputStream () ) ) ;

              //Aguarda por algum dado e imprime a linha recebida quando recebe
              System.out.println ( entrada.readLine () ) ;

              //trata possíveis excessões de input/output. Note que as excessões são as mesmas utilizadas para as classes de java.io
        }
        catch ( IOException e )
        {

              //Imprime uma notificação na saída padrão caso haja algo errado.
              System.out.println (
                    "Algum problema ocorreu para criar ou receber o socket." ) ;

        }
        finally
        {

              try
              {

                    //Encerro o socket de comunicação
                    s.close () ;

                    //Encerro o ServerSocket
                    serv.close () ;

              }
              catch ( IOException e )
              {
              }
        }

  }

}
##############################################

Abraço
Junior

Oi

Junior, aqui no PJ em um exemplo de chat multi threads…

http://www.portaljava.com/home/modules.php?name=Downloads

E tb tem um exemplo desse no livro de Java do Deitel

T+