-1

我在 LinuxOS 上用 Java 编写了一个小的客户端服务器应用程序,服务器从客户端接收不同的命令并通过启动不同的线程来处理它们。每个命令都有一个特定的线程。

我的主程序启动了一个线程,该线程响应不同的命令并由一个无限循环组成。目前还没有退出循环。该线程打印到启动主程序的终端,但不执行“.start()”之后的命令。

ServerSend servSend = new ServerSend(arg);
System.out.println("1"); 
servSend.start();
System.out.println("2");`

所以永远不会打印“2”,而线程内的一些“System.out.println()”可以工作。有人知道为什么吗?

4

1 回答 1

1

如果您尝试生成一个新线程,我假设ServerSend实现java.lang.Runnable或扩展java.lang.Thread,在这种情况下您应该覆盖public void run()方法,而不是start()方法。

IE:

public class ServerSend implements java.lang.Runnable {
    public Thread thread;
    public ServerSend(arg) {
        //constructor
        thread = new Thread(this);
    }
    public void run() {
        //the contents of this method are executed in their own thread
    }
}

然后使用它;

ServerSend s = new ServerSend(arg);
s.thread.start();

公共访问thread允许您执行以下操作;

s.thread.interrupt();

这是我的首选方法(使用Runnable)其他人更喜欢扩展Thread。这个答案几乎总结了我的想法:https ://stackoverflow.com/a/541506/980520

于 2012-10-30T16:47:46.040 回答