Skip to content

amankumarcu/Bank-Simulator

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Concurrent Banking Simulator (Java + Maven)

A simplified but realistic concurrent banking system simulator written in Java.
The project demonstrates proper multithreading design, deadlock-free transfers, fine-grained locking, and invariant verification using JUnit 5.

This repository is ideal for learning:

  • Thread safety and correctness in Java
  • Lock ordering strategies to prevent deadlock
  • Designing atomic operations (like money transfers)
  • Using ExecutorService for parallel workloads
  • Writing concurrency stress tests and verifying invariants

🚀 Features

✔ Multiple Bank Accounts

Each account uses its own ReentrantLock for fine-grained synchronization.

✔ Concurrent Money Transfers

Transfers between accounts are executed using a thread pool and Callable tasks.

✔ Deadlock-Free Design

Account locks are always acquired in consistent sorted order to avoid circular wait.

✔ Strong Invariants

The simulator guarantees:

  • Total system balance remains constant
  • No account ever goes negative

✔ Automated Concurrency Testing (JUnit 5)

A stress test launches thousands of randomized transfers across multiple threads and verifies all invariants at the end.


🧱 Project Structure

Screenshot 2025-12-11 at 9 49 07 PM

▶️ Run the Simulator

java -cp target/bank-simulator-1.0-SNAPSHOT.jar com.example.bank.Main

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages