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 transactions ) { for (Transaction tx : transactions) { executor.submit(() -> { processor.process(tx); }); } } }