46 lines
1.1 KiB
Java
46 lines
1.1 KiB
Java
package dev.banking.service;
|
|
|
|
import dev.banking.model.*;
|
|
import dev.banking.processor.TransactionProcessor;
|
|
|
|
import java.util.List;
|
|
import java.util.concurrent.ExecutorService;
|
|
|
|
/**
|
|
* Dispatches a list of transactions to a shared ExecutorService
|
|
* for concurrent (asynchronous) processing.
|
|
*
|
|
* Each transaction is submitted as an independent task and may
|
|
* be executed in parallel depending on thread availability.
|
|
*
|
|
* No ordering guarantees are provided between transactions.
|
|
*
|
|
* Lifecycle management of the ExecutorService (creation,
|
|
* shutdown, termination) is handled outside this class.
|
|
*/
|
|
public class BankingSystem {
|
|
|
|
private final ExecutorService executor;
|
|
private final TransactionProcessor processor;
|
|
|
|
public BankingSystem(
|
|
ExecutorService executor,
|
|
TransactionProcessor processor
|
|
) {
|
|
this.executor = executor;
|
|
this.processor = processor;
|
|
}
|
|
|
|
public void processTransactions(
|
|
List<Transaction> transactions
|
|
) {
|
|
|
|
for (Transaction tx : transactions) {
|
|
|
|
executor.submit(() -> {
|
|
processor.process(tx);
|
|
});
|
|
|
|
}
|
|
}
|
|
} |