だから、大学の問題を解決するのに苦労しています...私がする必要があるのは:
同時実行を使用して口座間の送金をシミュレートするアプリを作成する必要があります。次のように Bank クラスでこの転送を行うメソッドを作成する必要があります。
transfer(int from, int to, int value)
次に、この転送を管理する TransferThread クラスを作成する必要があります。
問題は、常にデッドロックが発生していることです...これまでに行ったこと:
転送スレッド:
public void run() {
int para,de,valor;
try
{
while(!interrupted())
{
para = new Random().nextInt(banco.getNUMCONTAS());
de = new Random().nextInt(banco.getNUMCONTAS());
valor = (int) (10000 * Math.random());
if(de == para)
continue;
banco.transfer(de, para, valor);
sleep(1);
}
}catch(InterruptedException e)
{
System.out.println(e.getMessage());
}
}
バンコ:
public synchronized void transfer(int de, int para, int valor) {
while(contas[de].getSaldo() - valor <= 0)
{
try
{
wait();
}catch(InterruptedException e)
{
}
}
notifyAll();
contas[de].setSaldo(-valor);
contas[para].setSaldo(valor);
System.out.println("Conta num: " + contas[de].getNum() + ". Saldo: " + contas[de].getSaldo());
System.out.println("Conta num: " + contas[para].getNum() + ". Saldo: " + contas[para].getSaldo());
}
そしてメイン:
Banco b = new Banco();
TransferThread[] threads = new TransferThread[2];
for(int i = 0; i < 2; i++){
threads[i] = new TransferThread(b);
threads[i].start();
}
どうすればこれを機能させることができますか?