mirror of
https://github.com/tiennm99/java-design-patterns.git
synced 2026-09-04 18:20:09 +00:00
docs: Event-Based Asynchronous explanation + refactor (#2916)
* explation + refactor * update logging
This commit is contained in:
@@ -0,0 +1,70 @@
|
||||
@startuml
|
||||
package com.iluwatar.event.asynchronous {
|
||||
class App {
|
||||
- LOGGER : Logger {static}
|
||||
+ PROP_FILE_NAME : String {static}
|
||||
~ interactiveMode : boolean
|
||||
+ App()
|
||||
+ main(args : String[]) {static}
|
||||
- processOption1(eventManager : EventManager, s : Scanner)
|
||||
- processOption2(eventManager : EventManager, s : Scanner)
|
||||
- processOption3(eventManager : EventManager, s : Scanner)
|
||||
+ quickRun()
|
||||
+ run()
|
||||
+ runInteractiveMode()
|
||||
+ setUp()
|
||||
}
|
||||
class AsyncEvent {
|
||||
- LOGGER : Logger {static}
|
||||
- eventId : int
|
||||
- eventListener : ThreadCompleteListener
|
||||
- eventTime : int
|
||||
- isComplete : AtomicBoolean
|
||||
- synchronous : boolean
|
||||
- thread : Thread
|
||||
+ AsyncEvent(eventId : int, eventTime : int, synchronous : boolean)
|
||||
+ addListener(listener : ThreadCompleteListener)
|
||||
- completed()
|
||||
+ isSynchronous() : boolean
|
||||
+ removeListener()
|
||||
+ run()
|
||||
+ start()
|
||||
+ status()
|
||||
+ stop()
|
||||
}
|
||||
interface Event {
|
||||
+ start() {abstract}
|
||||
+ status() {abstract}
|
||||
+ stop() {abstract}
|
||||
}
|
||||
class EventManager {
|
||||
- DOES_NOT_EXIST : String {static}
|
||||
+ MAX_EVENT_TIME : int {static}
|
||||
+ MAX_ID : int {static}
|
||||
+ MAX_RUNNING_EVENTS : int {static}
|
||||
+ MIN_ID : int {static}
|
||||
- currentlyRunningSyncEvent : int
|
||||
- eventPool : Map<Integer, AsyncEvent>
|
||||
- rand : SecureRandom
|
||||
+ EventManager()
|
||||
+ cancel(eventId : int)
|
||||
+ completedEventHandler(eventId : int)
|
||||
+ create(eventTime : int) : int
|
||||
+ createAsync(eventTime : int) : int
|
||||
- createEvent(eventTime : int, isSynchronous : boolean) : int
|
||||
- generateId() : int
|
||||
+ getEventPool() : Map<Integer, AsyncEvent>
|
||||
+ numOfCurrentlyRunningSyncEvent() : int
|
||||
+ shutdown()
|
||||
+ start(eventId : int)
|
||||
+ status(eventId : int)
|
||||
+ statusOfAllEvents()
|
||||
}
|
||||
interface ThreadCompleteListener {
|
||||
+ completedEventHandler(int) {abstract}
|
||||
}
|
||||
}
|
||||
AsyncEvent --> "-eventListener" ThreadCompleteListener
|
||||
AsyncEvent ..|> Event
|
||||
EventManager ..|> ThreadCompleteListener
|
||||
@enduml
|
||||
Reference in New Issue
Block a user