DemoBankAccount.java
package ch.hslu.exercises.sw05.input.ex2;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.IntStream;
public class DemoBankAccount {
private static final int number = 1_000;
private static final int amount = 5_000_000;
private static final List<BankAccount> sourceBankAccounts = IntStream.range(0, number)
.mapToObj(x -> new BankAccount(amount))
.collect(Collectors.toList());
private static final List<BankAccount> targetBankAccounts = IntStream.range(0, number)
.mapToObj(x -> new BankAccount())
.collect(Collectors.toList());
private static final Logger LOG = LoggerFactory.getLogger(DemoBankAccount.class);
public static void main(String[] args) {
final Thread[] threads = new Thread[number * 2];
for (int i = 0; i < number; i++) {
threads[i] = new Thread(new AccountTask(sourceBankAccounts.get(i), targetBankAccounts.get(i), amount));
threads[i + number] = new Thread(new AccountTask(targetBankAccounts.get(i), sourceBankAccounts.get(i), amount));
}
for (final Thread thread : threads) {
thread.start();
}
for (final Thread thread : threads) {
try {
thread.join();
} catch (InterruptedException e) {
return;
}
}
LOG.info("Bank accounts after transfers");
for (int i = 0; i < number; i++) {
LOG.info("source({}) = {}; target({}) = {};", i, sourceBankAccounts.get(i).getBalance(), i, targetBankAccounts.get(i).getBalance());
}
}
}