@Krandelbord You are correct. It is not thread safe as field is being shared without synchronization. Can you raise a PR with the fix? Perhaps change to atomicInteger?! If I use AtomicInteger then I have to make reading, comparing, incrementing, and setting to zero as one atomic operation.
It will end up in something like that
```
private static AtomicInteger lastServedId = new AtomicInteger();
  public void serverRequest(Request request) {
    int serverIdToUse = lastServedId.getAndUpdate((lastServedId) -> lastServedId < servers.size() - 1 ? ++lastServedId : 0);
    Server server = servers.get(serverIdToUse);
    server.serve(request);
  }
```
Doesn't look good. So I decided to make method synchronized. Is Volatile a Solution?! No, ```volatile``` is not suitable for cases where you want to read-update-write as an atomic operation; access to a volatile variable never has the potential to block: you're only ever doing a simple read or write ([source](https://www.javamex.com/tutorials/synchronization_volatile.shtml)).

Since we're doing changes in this class, could you also fix the misleading variable name ```serverIdToUse```: the value has nothing to do with the actual identifier of the server, it is just the index of the next server to use from ```List<Server> servers```
Is it threadsafe ? 
Seems like lastServedId field from LoadBlanacer.class is shared among all instances.
I think this is not threadsafe and will crash when mutiple threads will try to increment it.

https://github.com/iluwatar/java-design-patterns/blob/390c33e36e82b558e8cab6028d96e49c0a20da9f/monostate/src/main/java/com/iluwatar/monostate/LoadBalancer.java#L39
monostate/src/main/java/com/iluwatar/monostate/LoadBalancer.java
monostate/src/main/java/com/iluwatar/monostate/LoadBalancer.java
diff --git a/monostate/src/main/java/com/iluwatar/monostate/LoadBalancer.java b/monostate/src/main/java/com/iluwatar/monostate/LoadBalancer.java
index e440dfba22d6..b280de76702d 100644
--- a/monostate/src/main/java/com/iluwatar/monostate/LoadBalancer.java
+++ b/monostate/src/main/java/com/iluwatar/monostate/LoadBalancer.java
@@ -35,10 +35,10 @@
 
 public class LoadBalancer {
   private static List<Server> servers = new ArrayList<>();
-  private static int id;
   private static int lastServedId;
 
   static {
+    int id = 0;
     servers.add(new Server("localhost", 8081, ++id));
     servers.add(new Server("localhost", 8080, ++id));
     servers.add(new Server("localhost", 8082, ++id));
@@ -67,14 +67,12 @@ public static int getLastServedId() {
   /**
    * Handle request
    */
-  public void serverRequest(Request request) {
+  public synchronized void serverRequest(Request request) {
     if (lastServedId >= servers.size()) {
       lastServedId = 0;
     }
     Server server = servers.get(lastServedId++);
     server.serve(request);
   }
-
-
-
+  
 }
