我在LinuxOS上用Java做了一个小客户端服务器应用程序,其中服务器从客户端接收不同的命令并通过启动不同的线程来处理它们。每个命令都有一个特定的线程。
我的主程序启动一个线程,它响应不同的命令并简化了一个无限循环。还没有退出循环。此Thread打印到启动主程序的终端,但不执行“.start()”之后的命令。
ServerSend servSend = new ServerSend(arg);
System.out.println("1");
servSend.start();
System.out.println("2");`
所以从不打印“2”,而线程内部的一些“System.out.println()”工作。有人知道为什么吗?
答案 0 :(得分:1)
如果您尝试生成新主题,我假设ServerSend
实现java.lang.Runnable
或扩展java.lang.Thread
,在这种情况下您应该覆盖public void run()
方法,不 start()
方法。
即:
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