Viruz Blog
¿Quieres reaccionar a este mensaje? Regístrate en el foro con unos pocos clics o inicia sesión para continuar.

Uso de clase Thread parte 1

Ir abajo

Uso de clase Thread parte 1 Empty Uso de clase Thread parte 1

Mensaje  Admin (Viruz) Sáb Dic 22, 2012 9:04 am

Saludándolos en este nuevo día y deseándoles el mejor de los afectos, explorando entre mis carpetas me encontré con un pequeño pero al igual interesante programa del cual si mi memoria no me falla fue el primero que realice en el tema de HILOS cuando tome un curso de Java.

En lo personal para mi los famosos Thread son de la parte mas complicada (entender y realizar) en el lenguaje Java, aunque no imposible. Para conocer un poco mas sobre Threads visita el enlace de la parte de abajo.

Lo que se necesita conocer
  • Clase Thread
Lo que debemos de saber primordialmente antes de realizar un Thread es lo siguiente:

  1. java.lang.Thread es la clase que se utiliza para crear y controlar los hilos.
  2. Cada Thread tiene su stack privado.
  3. Todos los Threads utilizan el mismo Heap.
  4. La clase que tendrá el Thread debe implementar de la interfaz Runnable y con ello poner su método abstracto run().
  5. Se puede también crear un hilo creando un objeto de la clase Thread.
  6. Para inicializar un hilo se debe de realizar con el método start().
  7. Al ejecutarse 2 Threads tienen la opción de poder sincronizarse (Synchronized), esto se utiliza para que el método se apodere de los atributos compartidos hasta que termine de ejecutarse.
Estos son en el punto de vista personal las cosas que siempre se debe recordar al elaborar un hilo, ahora les comentaré sobre el programa que les dejaré el día de hoy.

Imágenes
[Tienes que estar registrado y conectado para ver esa imagen]
¿Como funciona el programa?

  1. Consta de 2 hilos que se crean en la clase Main el cual se interpretarán como 2 usuarios que retirarán efectivo de la misma cuenta y se inician en esta misma clase.
  2. En la clase Cuenta se declara que el saldo será de 50 y tendrá el método que realizará el retiro el cual solo hará la operación de: al saldo restar una cierta cantidad (10).
  3. Dentro del método run() se hará un ciclo for() con el cual haremos los retiros automáticamente (5 recorridos).
  4. Por último el método hacerRetiro() se realizarán 2 operaciones, 1 es la de preguntar cual es el hilo que se esta ejecutando al retirar en un recorrido con Thread.currentThread().getName() y la 2 es mediante un if() preguntar solo si el saldo es mayor a la cantidad que se retira esto solo para finalizar el programa si es 0.
Código

Clase Main
/**
*
* @author Jesus Ivan
*/
public class Main {
public static void main(String [] args) {
Cuenta cuenta = new Cuenta();
//Los hilos se asocian ala misma cuenta para que las personas retiren
//de la misma cuenta.
HiloCuenta r = new HiloCuenta(cuenta);
Thread uno = new Thread(r);
Thread dos = new Thread(r);
uno.setName("Pedro");
dos.setName("Juan");
uno.start();
dos.start();
}
}

Clase Cuenta
/**
*
* @author Jesus Ivan
*/
public class Cuenta {
private int saldo = 50;

public int getSaldo() {
return saldo;
}

public void retiro (int cantidad) {
saldo+=-cantidad;
}
}

Clase HiloCuenta

/**
*
* @author Jesus Ivan
*/
public class HiloCuenta implements Runnable {
private Cuenta cuenta;

public HiloCuenta(Cuenta cuenta) {
this.cuenta = cuenta;
}

public void run() {
//for que v a pasar 5 recorridos cada uno de $10
for (int i=0; i<5; i++) {
//Se hace un retiro de $10
hacerRetiro(10);
if (cuenta.getSaldo()<0) {
System.out.println("Cuenta sobregirada");
}
}
}
//Se sincroniza para que cuando retire uno se actualize y no agarren el
//objeto.
private synchronized void hacerRetiro(int cantidad) {
String hilo = Thread.currentThread().getName();
//Pregunta si el saldo es mayor que Cantidad
if (cuenta.getSaldo() >= cantidad) {
System.out.println(hilo +" Procede a realizar un Retiro " +
cuenta.getSaldo());
//Excepcion try,catch se pone por el sleep.
try {
Thread.sleep(500);
} catch (InterruptedException e) {
System.out.println("Error de thread");
}
cuenta.retiro(cantidad);
System.out.println(hilo + " Termino de realizar un retiro " +
cuenta.getSaldo());
} else {
System.out.println(" No hay suficiente saldo para que "+ hilo +
" realice un retiro (" + cuenta.getSaldo()+ ")");
}
}
}


Descarga el código
Uso de Threads
Autor: Viruz study
Enlace: Uso de clase Thread en Java
Admin (Viruz)
Admin (Viruz)
Admin

Mensajes : 148
Fecha de inscripción : 23/09/2012
Edad : 36
Localización : Desktop

https://viruz.foroactivo.mx

Volver arriba Ir abajo

Volver arriba

- Temas similares

 
Permisos de este foro:
No puedes responder a temas en este foro.