Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/akshayanmohandas/concurrent-ticketing-system
A concurrent ticketing system in Java, focusing on synchronizing multiple threads to manage ticket printing and resource refilling operations.
https://github.com/akshayanmohandas/concurrent-ticketing-system
concurrency concurrent-programming intellij java java-thread multithreading oop synchronization thread ticket-machine ticket-management-system ticketing-system
Last synced: 5 days ago
JSON representation
A concurrent ticketing system in Java, focusing on synchronizing multiple threads to manage ticket printing and resource refilling operations.
- Host: GitHub
- URL: https://github.com/akshayanmohandas/concurrent-ticketing-system
- Owner: AkshayanMohandas
- Created: 2024-05-31T23:57:24.000Z (8 months ago)
- Default Branch: main
- Last Pushed: 2025-01-11T23:12:57.000Z (25 days ago)
- Last Synced: 2025-01-12T00:19:20.451Z (25 days ago)
- Topics: concurrency, concurrent-programming, intellij, java, java-thread, multithreading, oop, synchronization, thread, ticket-machine, ticket-management-system, ticketing-system
- Language: Java
- Homepage:
- Size: 16.6 KB
- Stars: 1
- Watchers: 1
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Concurrent Ticketing System
## Project Overview
This project is a **Concurrent Ticketing System** developed as part of my BEng Software Engineering coursework at the **University of Westminster**. The system is implemented in Java and models a real-world ticketing scenario involving passengers and technicians interacting with a shared Ticket Machine. The project also incorporates **Finite State Processes (FSP)** to design and verify the system using the **LTSA tool**.I achieved an **exceptional score of 96/100** for this project, highlighting its quality and adherence to concurrency best practices.
---
## Features
- **Multi-threaded Design**: Simulates concurrent interactions between passengers and technicians.
- **Thread Safety**: Ensures mutual exclusion for shared resources (paper and toner).
- **FSP Modeling**: Modeled system behavior using FSP and verified with LTSA.
- **Resource Management**: Implements realistic scenarios of paper and toner exhaustion and replenishment.
- **Randomized Delays**: Simulates real-world timing differences between operations.---
## System Components
### 1. Ticket Machine
- Manages resources: paper and toner.
- Handles ticket printing requests with synchronization to avoid conflicts.
- Allows refilling of resources by technicians.### 2. Passenger
- Represents a user purchasing tickets from the Ticket Machine.
- Requests multiple tickets and waits for the machine to be ready if resources are insufficient.### 3. Ticket Paper Technician
- Refills the Ticket Machine with paper when required.
- Attempts refilling up to three times, with randomized delays.### 4. Ticket Toner Technician
- Replaces the toner cartridge in the Ticket Machine.
- Attempts replacement up to three times, with randomized delays.### 5. Finite State Processes (FSP)
- Models the system's behavior for verification.
- Includes processes for the Ticket Machine, Passengers, and Technicians.
- Verified and animated using the LTSA tool.---
## Skills Gained
- **Concurrency and Multithreading**: Hands-on experience in designing and implementing thread-safe systems.
- **Problem-Solving**: Tackled challenges like mutual exclusion and deadlock prevention.
- **Formal Verification**: Modeled and verified system behavior using the LTSA tool.
- **Java Programming**: Advanced proficiency in Java threading and synchronization.---