I think it's a lack of understanding of object orientation that is causing the problem.
When you have a base class with a variable and several child classes, these child classes have individual instances of that variable. Let's say I have a base class "tree" and two child classes "oak" and "palm". The tree has a height and so both oak and palm also have heights. But those heights are individual instances of the value, meaning that if I change the height of an oak it doesn't affect the height of other trees.
By inheriting a class you are creating an "isA-relationship", meaning that e.g. an oak IS A tree, and since every tree has a height so has an oak. In your case you have several classes that ARE servers, so each one of them has a thread of their own.
If you want them to share the same thread you need to create one instance of the server class and then create "hasA-relationships", meaning that every class that is supposed to use that thread needs to have a member that points at the same server instance.