import java.util.Random; public class BankingTest extends Thread { private Account[] accounts; private static Random random = new Random(); public BankingTest(Account[] accounts) { this.accounts = accounts; } public void run() { final TransferManager manager = new TransferManager(); //simulate some transfers for(int i = 0; i < accounts.length; i++) { final int index = i; Thread thread = new Thread() { public void run() { try { for(int j = 0; j < 10; j++) { manager.issueTransfer(accounts[index], accounts[(index+1)%accounts.length], 100); Thread.sleep(random.nextInt(10)); } } catch (InterruptedException e) { e.printStackTrace(); } } }; thread.start(); } //wait a bit try { Thread.sleep(60); } catch (InterruptedException e) { e.printStackTrace(); } manager.performTransfers(); System.out.println(manager); } }