When it comes to concurrent actions. Complexity is all over the place. Using instances that manages those concurrent actions is the solution. Those utils helps to deal with concurrent actions and infinite loops and many other concurrent actions. The whole package depends on the logic rather than the timing.

GitHub Javadoc

The loop instance is a way to pass executable code and control its execution and edit it concurrently. There is a loop version of almost every java code type (while, for, etc...).

GitHub Javadoc

A manger that helps maneging a list of loops concurrently.

GitHub Javadoc

Locking object synchronization is must be in order and sometimes gets confusing. And when getting into undefined synchronization order. It starts to be impossible to manage it. This class creates a thread that locks the object that needed to be lock. And release it as needed. And can be controlled concurrently with simple method. The downside of this is it uses a whole thread and can't rely on it that much since creating useless threads is not good. Also if the instance of the lock is not accessible to any control thread, the thread will stay forever locking the object and the thread will not stop.