Synchronised blocking: use a generated lockObject, synchronise it, and use it as cross-thread synchronisation (the if test tests the value of the the lockObject instance) eg: lockObject is used to make sure list of connected clients (active read operations), which the write operation waits to be 0 before proceeding. Also need to notify from clientList class once is 0