isEnd
VALID
NULL
isEmpty()
False
Queue! isEmpty
open()
wait
ENDINPUT
addWait()
synchronize(Queue)
setEnd()notifyAll()
True
initial Main
get a request
go()
Thread1:Input
Return
setEnd()add()remove()isEnd()isEmpty()
Thread2:ElevatorSystem
get targetElevator
Thread:Elevator
add requestto waitQueue
QueueisEmpty
<Shared obj>Queue