Foros del Web » Programación para mayores de 30 ;) » Java »

duda con Theard

Estas en el tema de duda con Theard en el foro de Java en Foros del Web. Hola tengo un ejemplo de clase , sobre multitheard, pongo la parte que no entiendo del ejemplo: Código: class clientThread extends Thread { private DataInputStream ...
  #1 (permalink)  
Antiguo 11/12/2012, 14:34
 
Fecha de Ingreso: diciembre-2012
Mensajes: 1
Antigüedad: 11 años, 4 meses
Puntos: 0
duda con Theard

Hola tengo un ejemplo de clase , sobre multitheard, pongo la parte que no entiendo del ejemplo:

Código:
class clientThread extends Thread {

  private DataInputStream is = null;
  private PrintStream os = null;
  private Socket clientSocket = null;
  private final clientThread[] threads;
  private int maxCliente;  
  
  public clientThread(Socket clientSocket, clientThread[] threads) {
    this.clientSocket = clientSocket;
    this.threads = threads;
    maxCliente = threads.length;
  }
  
  public void run() {
    int maxClientsCount = this.maxCliente;
    clientThread[] threads = this.threads;

    try {
        
      is = new DataInputStream(clientSocket.getInputStream());
      os = new PrintStream(clientSocket.getOutputStream());
      os.println("Introduce tu nombre");
      String nombre = is.readLine().trim();
      os.println("Hola " + nombre + " bienvenido a la sala. Introduce /fin para salir de la sala");
  
      for (int i = 0; i < maxCliente; i++) {
        if (threads[i] != null && threads[i] != this) {
          threads[i].os.println( nombre+ " se ha conectado");
        }
      }

solo he puesto una parte del codigo;

Código:
lo que no entiendo que es lo que hace :
public clientThread(Socket clientSocket, clientThread[] threads) {
    this.clientSocket = clientSocket;
    this.threads = threads;
    maxCliente = threads.length;
  }
tampoco:

Código:
public void run() {
    int maxClientsCount = this.maxCliente;
    clientThread[] threads = this.threads;
y por ultimo, en la parte del if no entiendo el this.
Código:
for (int i = 0; i < maxCliente; i++) {
        if (threads[i] != null && threads[i] != this) {
          threads[i].os.println( nombre+ " se ha conectado");
        }
      }

Agradeciria mucho que alguien pudiera resolverme estas dudas
  #2 (permalink)  
Antiguo 11/12/2012, 15:20
Avatar de hschimpf  
Fecha de Ingreso: junio-2009
Ubicación: in the World Wide Web
Mensajes: 140
Antigüedad: 14 años, 10 meses
Puntos: 17
Respuesta: duda con Theard

Cita:
Iniciado por dafrantu Ver Mensaje
lo que no entiendo que es lo que hace :
Código:
public clientThread(Socket clientSocket, clientThread[] threads) {
    this.clientSocket = clientSocket;
    this.threads = threads;
    maxCliente = threads.length;
  }
Es el constructor en el cual almacena los datos del thread. Almacena el socket cliente, los threads ya iniciados y la cantidad de los mismos.
Cita:
Iniciado por dafrantu Ver Mensaje
tampoco:
Código:
public void run() {
    int maxClientsCount = this.maxCliente;
    clientThread[] threads = this.threads;
Obtiene la cantidad de clientes en una variable y los clientes en otra (por cierto, un mal uso de variables ya que puedes acceder a los mismos directamente)
Cita:
Iniciado por dafrantu Ver Mensaje
y por ultimo, en la parte del if no entiendo el this.
Código:
for (int i = 0; i < maxCliente; i++) {
        if (threads[i] != null && threads[i] != this) {
          threads[i].os.println( nombre+ " se ha conectado");
        }
      }
Avisa a todos los clientes ya iniciados que se conecto el nuevo cliente, y el this lo utiliza en el if para verificar que el cliente a avisar no sea el mismo que acaba de ingresar a la sala.

Suerte!
__________________
Hermann D. Schimpf
Visita mis repositorios de:
Clases Java: http://code.google.com/p/javaclassesrepository/
Clases PHP: http://code.google.com/p/phpclassesrepository/

Etiquetas: clase, string
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:50.