| 
									
										
										
										
											2016-08-30 13:29:12 +02:00
										 |  |  | @startuml | 
					
						
							|  |  |  | package com.iluwatar.mutex { | 
					
						
							| 
									
										
										
										
											2016-11-26 12:51:06 +01:00
										 |  |  |   class App { | 
					
						
							|  |  |  |     + App() | 
					
						
							|  |  |  |     + main(args : String[]) {static} | 
					
						
							|  |  |  |   } | 
					
						
							| 
									
										
										
										
											2016-09-18 17:51:09 +03:00
										 |  |  |   class Jar { | 
					
						
							|  |  |  |     - beans : int | 
					
						
							|  |  |  |     - lock : Lock | 
					
						
							|  |  |  |     + Jar(beans : int, lock : Lock) | 
					
						
							|  |  |  |     + takeBean() : boolean | 
					
						
							|  |  |  |   } | 
					
						
							| 
									
										
										
										
											2016-08-30 13:29:12 +02:00
										 |  |  |   interface Lock { | 
					
						
							|  |  |  |     + acquire() {abstract} | 
					
						
							|  |  |  |     + release() {abstract} | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  |   class Mutex { | 
					
						
							|  |  |  |     - owner : Object | 
					
						
							|  |  |  |     + Mutex() | 
					
						
							|  |  |  |     + acquire() | 
					
						
							|  |  |  |     + getOwner() : Object | 
					
						
							|  |  |  |     + release() | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | Jar -->  "-lock" Lock | 
					
						
							|  |  |  | Mutex ..|> Lock  | 
					
						
							|  |  |  | @enduml |