我一直在尝试在我创建的应用程序中开发嵌入式Web服务器。从本质上讲,我们的主要流程创建了一个简单的Web服务器(利用ServerSocket),然后主流程(理论上)就会开展业务。
Main(){
doingStuff();
WebServer server = new WebServer();
server.run();
doingMoreStuff();
}
public class WebServer implements Runnable{
ServerSocket inbound;
//constructor
WebServer(){
inbound = new ServerSocket(9687);
}
public void Run(){
Socket client;
while(true){
client = inbound.accept();
SomeClass threadedClassThatHandlesClientMessage = new SomeClass(client);
someclass.run();
}
}
}
在前面的伪代码中,我知道带有ServerSocket accept()的线程调用块,停止WebServer类线程以及主线程。有什么我想念的吗?
我知道我可以创建两个可以作为单独进程串联运行的程序,但我希望避免任何IPC并针对单个进程进行搜索,其中一个线程中的数据处理和一个通用的serversocket接收数据单独的线程。虽然我对这一切还不熟悉,但我很确定这是我忽略的那些简单的事情之一,但我非常感谢你能提供的任何帮助。
答案 0 :(得分:2)
在.run()
上调用Runnable
不会使其在新线程中运行,而是在当前线程中运行它。
您的意思是new Thread (server).start ()
吗?