Red de conocimiento informático - Consumibles informáticos - Planificación bancaria

Planificación bancaria

Esto requiere enhebrado.

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;

}

}

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()

{

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)

{

//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>}