Programación del monto de retiro
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<accounts.length;i++)
{
cuentas[I]= saldo inicial;
}
}
La transferencia nula sincrónica pública (int desde, int hasta, cantidad doble) arroja InterruptedException
{
if(cuenta[desde]& lt ;Cantidad)
{
espera();
}
sistema fuera . ;
Cuenta [de] -=Monto;
system out . printf(" % 10.2 f de % d a % d ", monto, de, a ); p> p>
Cuenta[de]+=monto;
sistema . printf(" Saldo total:% 10.2 f % n ", getTotalBalance()
<); p> notificar a todos();}
Objeto de sincronización privado getTotalBalance()
{
doble suma = 0; p>
Para (cuentas duales)
{
suma+= AC;
}
Devolver la suma; p>
}
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;i<10;i++)
{
TransferRunnable r = new TransferRunnable(b, 0, 10000);
Hilo t = nuevo hilo(r);
t .
}
}
<. p>}