Это не похоже на проблему с потоками.
Похоже, вы можете использовать простое наследование.
Используя что-то вроде
abstract class OSMethods {
void listDir();
}
class OSMethodsLinux : OSMethods {
void listDir() { system.exec("ls"); }
}
class OSMethodsWin : OSMethods {
void listDir() { system.exec("dir"); }
}
Тогда код обработки клиентского сервера имеет метод, подобный
void accept(Socket s, OSMethods m) {
s.readCommand();
m.listDir(); // or whatever
}
Убедитесь, что вы передали правильный экземпляр для принятия класса Linux или Win.
Так что никаких статических методов.
Как правило, я обнаружил, что вам не понадобятся статические методы в ваших программах (кроме main), если вы не делаете умные вещи, большинство вещей просто не нуждаются в них, и они приводят к менее гибкому дизайну.