Dev #3

Merged
Aryan merged 22 commits from dev into main 2026-06-05 20:30:51 +00:00
Showing only changes of commit a063274fb9 - Show all commits
@@ -7,7 +7,11 @@ public class BankAccount {
/* /*
* Students may introduce additional fields * Students may introduce additional fields
* if required by their synchronization strategy. * such as:
* - Lock / ReentrantLock
* - ReadWriteLock
* - Object monitor
* - etc.
*/ */
public BankAccount(int accountId, long initialBalance) { public BankAccount(int accountId, long initialBalance) {
@@ -20,34 +24,55 @@ public class BankAccount {
} }
/* /*
* TODO * TODO:
* Implement a thread-safe balance reader. * Return the current balance in a thread-safe way.
*
* Requirements:
* - Must be safe under concurrent reads/writes
* - Should not block unnecessarily if using read/write locks
*/ */
public long getBalance() { public long getBalance() {
throw new UnsupportedOperationException(); throw new UnsupportedOperationException("TODO: implement thread-safe balance read");
} }
/* /*
* TODO * TODO:
* Implement a thread-safe deposit operation. * Increase balance atomically.
*
* Requirements:
* - Must not lose updates under concurrency
*/ */
public void deposit(long amount) { public void deposit(long amount) {
throw new UnsupportedOperationException(); throw new UnsupportedOperationException("TODO: implement thread-safe deposit");
} }
/* /*
* TODO * TODO:
* Implement a thread-safe withdrawal operation. * Decrease balance atomically.
*
* Requirements:
* - Must not cause race conditions
* - Negative balance handling is NOT required unless you decide
* to extend the system (optional)
*/ */
public void withdraw(long amount) { public void withdraw(long amount) {
throw new UnsupportedOperationException(); throw new UnsupportedOperationException("TODO: implement thread-safe withdraw");
} }
/* /*
* TODO * TODO:
* Implement an atomic and deadlock-free transfer. * Transfer money between two accounts atomically.
*
* IMPORTANT REQUIREMENTS:
* - Must be atomic (no partial transfer)
* - Must be deadlock-free
* - Must protect both source and target accounts
*
* HINT:
* - Consider global lock ordering using accountId
* - Or tryLock with retry strategy
*/ */
public void transfer(BankAccount target, long amount) { public void transfer(BankAccount target, long amount) {
throw new UnsupportedOperationException(); throw new UnsupportedOperationException("TODO: implement atomic deadlock-free transfer");
} }
} }