1 | package com.hammurapi.eventbus.tests.fastfood; |
2 | |
3 | import java.util.concurrent.atomic.AtomicBoolean; |
4 | import java.util.concurrent.atomic.AtomicInteger; |
5 | |
6 | public class Dish { |
7 | |
8 | private static AtomicInteger INSTANCE_COUNTER = new AtomicInteger(); |
9 | |
10 | private AtomicBoolean consumed = new AtomicBoolean(false); |
11 | |
12 | private final int instanceId = INSTANCE_COUNTER.incrementAndGet(); |
13 | |
14 | /** |
15 | * Consumes dish |
16 | * @return true if dish successfully consumed. Dish can be consumed only once. |
17 | */ |
18 | public boolean consume() { |
19 | if (consumed.getAndSet(true)) { |
20 | System.err.println("Already consumed: "+this); |
21 | } |
22 | return true; |
23 | } |
24 | |
25 | public boolean isConsumed() { |
26 | return consumed.get(); |
27 | } |
28 | |
29 | @Override |
30 | public String toString() { |
31 | String cName = getClass().getName(); |
32 | int idx = cName.lastIndexOf('.'); |
33 | return cName.substring(idx+1)+" ("+instanceId+")"; |
34 | } |
35 | |
36 | } |