Planificación bancaria
Este es el código
//Tipo de banco
Banco de tipo público
{
Privado extremo de period double[ ]Cuentas;
Banco Público (int n, double initBalance)
{
cuentas = new double[n];
for (int I = 0; i lt cuentas. longitud; i )
{
cuentas[I]= saldo inicial;
} p>
}
La transferencia nula sincrónica pública (int desde, int hasta, doble cantidad) arroja InterruptedException
{
if(cuenta[desde] lt; cantidad )
{
espera();
}
sistema fuera . );
Cuenta [de] -=Monto;
sistema fuera . printf(" 10.2 f de d a d ", monto, de, a
);cuenta[de] = importe;
system.out.printf("Saldo total: 10,2 f n", getTotalBalance());
notificar a todos();
}
Objeto de sincronización privado getTotalBalance()
{
doble suma = 0;
Usado para ( cuentas duales)
{
suma = AC;
}
Devuelve la suma
}
public int size()
{
Devolver cuenta.
Longitud;
}
}
//Función de subproceso
La clase pública TransferRunnable implementa Runnable
{
Int privado deAc
Amt máximo doble privado
Retraso de int privado = 10;
Transferencia pública ejecutable (BancoBanco, int deAC, doble importe máximo )
{
super();
this.bank = banco
this.fromAc = fromAc
this.maxAmt = maxAmt
}
@override
public void run() p>
{
while(true)
{
intenta
{
int toAc =(int)(banco . size()* math . random());
doble AMT = maxAmt * math . random();
Transferencia bancaria (deAc, aAc, AMT);
hilo dormido. ((int)(delay * math . random());
}
catch (interrupción excepción e) p>
{
//TODO bloque de captura generado automáticamente
e.printstacktrace();
}
}
}
}
//Tipo de prueba
Examen de curso público
{
/**
* @ param args
*/
Public static void main(String[] args)
{
Banco b = nuevo banco(10 ,10000);
for(int I = 0;ilt10;i)
{
TransferRunnable r = new TransferRunnable(b, 0, 10000);
Hilo t = nuevo hilo(r);
t .
}
}
<. p>}