Java 如果';这就是你的全部';你打算用主要的方法做什么?

Java 如果';这就是你的全部';你打算用主要的方法做什么?,java,multithreading,server,Java,Multithreading,Server,例如,如果我正在这样做: public static void main(String[] args){ Thread myThread = new Thread(new MyServerRunnable()); myThread.start(); } 我最好还是这样做: public static void main(String[] args){ MyServerClass server = new MyServerClass(); server.start(); } 其

例如,如果我正在这样做:

public static void main(String[] args){

 Thread myThread = new Thread(new MyServerRunnable());
 myThread.start();

}
我最好还是这样做:

public static void main(String[] args){

 MyServerClass server = new MyServerClass();
 server.start();

}
其中
start()
包含一个while循环,而不是处理所有事情。
这有关系吗?对于第一种方法,我感觉我无缘无故地启动了一个线程,因为主线程实际上只是启动了另一个线程,所以我最好使用主线程

如果你这样说,答案是肯定的。不过,将服务器实现为可运行可能会有好处,因为稍后您可能会决定使用ThreadPool或其他更高级的技术,而可运行为此提供了更大的灵活性


此外,除非您在主线程中调用线程#join,否则主线程将在启动服务器后完成,因此实际上您并没有浪费那么多时间。

如果您需要线程,那么使用main方法创建线程并不重要。线程共享文本段并复制变量。只有当主方法中的一些变量仅可用于其中一个踏板时,才能获得冗余。

我认为第二个更具可读性。另一方面,这取决于它对其他代码的影响。您所说的一切都是正确的,但您不需要创建线程来调用Runnable对象的run()方法。