Please refer to the top-level README.md file located at the root of the repository first to understand
the overall structure and approach of this repository. Once you have gone through the top-level README.md,
you can start reading the details below.
Concurrent programming enables developers to efficiently and correctly mediate the use of shared resources in parallel programs. I have used basic concurrency constructs in Java such as threads, locks, critical sections, atomic variables, isolation, actors, optimistic concurrency and concurrent collections, as well as their theoretical foundations (e.g., progress guarantees, deadlock, livelock, starvation, linearizability).
- Algorithms
- System Programming
- Java
- Performance Testing
- Computer Science
- Debugging
- Programming Principles
- Data Structures
- Distributed Computing
- Java Programming
- Concurrency theory: progress guarantees, deadlock, livelock, starvation, linearizability
- Use of threads and structured/unstructured locks in Java
- Atomic variables and isolation
- Optimistic concurrency and concurrent collections in Java (e.g., concurrent queues, concurrent hashmaps)
- Actor model in Java