Está en la página 1de 8

Aplicaciones Distribuidas

“SINCRONIZACIÓN DE THREADS III”

Integrantes:

Alberto Carrera

Maycol Pacha

Juan José Ruiz

Tutor:

Ing. Mauricio Campaña

SANGOLQUÍ-ECUADOR
 CONTENIDO
1 ESTADOS DE LOS THREADS...................................................................................................................................4
1.1 NUEVO............................................................................................................................................................ 4
1.2 EJECUTABLE...................................................................................................................................................4
1.3 BLOQUEADO...................................................................................................................................................4
1.4 MUERTO............................................................................................................................................................4
2 EJERCICIO PRÁCTICO..................................................................................................................................................5
2.1 CREACIÓN DE BANCO JAVA:...............................................................................................................5
2.2 RESOLUCIÓN:.................................................................................................................................................5
3 CÓDIGO DEL PROGRAMA.........................................................................................................................................7
4 CONCLUSIONES............................................................................................................................................................8
5 REFERENCIAS.................................................................................................................................................................9
Figure 1 Estados de los Threads...................................................................................................4
Figure 2 Esquema gráfico Banco Java...........................................................................................5
Figure 3 Creación del proyecto Banco..........................................................................................5
Figure 4 Clase Principal BancoSinSincronizar...............................................................................5
Figure 5 Creación Clase Banco......................................................................................................6
Figure 6 Creación de Cuentas.......................................................................................................6
Figure 7 Creación Método trasferencias......................................................................................6
Figure 8 Desarrollo método trasferencia......................................................................................7
Figure 9 Impletenación del método getSaldoTotal()....................................................................7

Tabla 1 Código del Programa- Sincronización de Hilos...............................................................10

1 ESTADOS DE LOS THREADS

1.1 NUEVO
Cuando un hilo está en este estado, es simplemente un objeto Thread vacío. El sistema
no ha destinado ningún recurso para él. Desde este estado solamente puede arrancarse
llamando al método start(), o detenerse definitivamente, llamando al método stop().

1.2 EJECUTABLE
La llamada al método start() creará los recursos del sistema necesarios para que el hilo
puede ejecutarse, lo incorpora a la lista de procesos disponibles para ejecución del
sistema y llama al método run() del hilo de ejecución.

Cuando el hilo se encuentra en este estado, todas las instrucciones de código que se
encuentren dentro del bloque declarado para el método run(), se ejecutarán
secuencialmente.

Thread MiThread = new MiClaseThread();


MiThread.start();

1.3 BLOQUEADO
El hilo de ejecución entra en estado Parado cuando alguien llama al método suspend(),
cuando se llama al método sleep(), cuando el hilo está bloqueado en un proceso de
entrada/salida o cuando el hilo utiliza su método wait() para esperar a que se cumpla
una determinada condición. Cuando ocurra cualquiera de las cuatro cosas anteriores, el
hilo estará Parado.

1.4 MUERTO
Un hilo que contenga a este método run(), morirá naturalmente después de que se
complete el bucle y run() concluya.

El método stop() envía un objeto ThreadDeath al hilo de ejecución que quiere detener.


Así, cuando un hilo es parado de este modo, muere asíncronamente. El hilo morirá en el
momento en que reciba ese objeto ThreadDeath.

Figure 1 Estados de los Threads

2 EJERCICIO PRÁCTICO

1.5 CREACIÓN DE BANCO JAVA:


 Creación de 100 cuentas corrientes.
 Cada una tendrá un saldo iniciar de: 2.000 euros.
 El saldo total de todas las cuentas: 2.000*100= 200.00 euros.
 Se realizarán transferencias entre cuentas, por ejemplo: transferencia de la
cuenta 1 a la cuenta 50.
 El saldo total de todas de las cuentas debe ser el mismo sin importar el número
de transacciones que se realicen.

Figure 2 Esquema gráfico Banco Java

1.6 RESOLUCIÓN:
 Creación de proyecto:

Figure 3 Creación del proyecto Banco


 Creación de la Clase Principal “BancoSinSincronizar”.

Figure 4 Clase Principal BancoSinSincronizar


 A continuación, se creará la Clase “Banco”, misma que se encargará de la creación
de las cuentas corrientes y posteriormente cargar a las cuentas con el salgo inicial
establecido.
Figure 5 Creación Clase Banco
 Para identificar el número de cuentas se utilizará un ciclo repetitivo con lo cual cada
cuenta se identificará con dígitos que van desde cero hasta n.

Figure 6 Creación de Cuentas


 Para la realización de las trasferencias, se crea el método “trasferencias”, mismo que
debe recibir como parámetros: cuenta de origen, cuenta de destino y la cantidad. Es
importante controlar que si la transferencia de origen es mayor a la cantidad de
origen simplemente esta transacción no se va a poder realizar.

Figure 7 Creación Método trasferencias


 En el método creado, se establecen las reglas del negocio en donde se realizan los
cálculos necesarios con el fin de actualizar la información en tiempo real, tanto de
que cuenta se realizó la transferencia, el monto a transferir, cuenta destino y
finalmente el saldo total de todas las cuentas, mismo que no debería cambiar sin
importar las transacciones que se realicen.
Figure 8 Desarrollo método trasferencia
 Para calcular el monto total de todas las cuentas se creara el método
“getSaldoTotal()”, mismo que recorrerá toras las cuentas he ira acumulando en la
variable “suma_cuentas”.

Figure 9 Impletenación del método getSaldoTotal()

3 CÓDIGO DEL PROGRAMA


Tabla 1 Código del Programa- Sincronización de Hilos

/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/

/**
*
* @author mjpacha
*/
public class BancoSinSincronizar {
public static void main(String[] args){

}
}

class Banco{
public Banco(){
cuentas=new double[100];
for(int i=0;i<cuentas.length;i++){
cuentas[i]=2000;
}
}

public void trasferencia(int cuentaOrigen,int cuentaDestiono,double cantidad){


if(cuentas[cuentaOrigen]<cantidad){
return;
}

System.out.println(Thread.currentThread());
cuentas[cuentaOrigen]-=cantidad;
System.out.printf("%10.2f de %d para %d",cantidad,cuentaOrigen,cuentaDestiono);
cuentas[cuentaDestiono]+=cantidad;
System.out.printf("Saldo total: %10.2f%n",getSaldoTotal());
}

public double getSaldoTotal(){


double suma_cuentas=0;
for(double a:cuentas){
suma_cuentas+=a;
}
return suma_cuentas;
}

private final double[] cuentas;


}

4 CONCLUSIONES
 Se concluye que cuando dos o más hilos necesitan acceder de manera simultánea a
un recurso de datos compartido necesitan asegurarse de que sólo uno de ellos accede
al mismo cada vez. Java proporciona un soporte único, a nivel de lenguaje, para
dichas tareas de sincronización.

5 REFERENCIAS
[1] Tomado de: “Curso Java. Threads IV”
 Sincronización de Threads III

https://www.youtube.com/watch?v=XkNKQprHlMM

También podría gustarte