Java 在非服务器应用程序中嵌入ServerSockets
我一直在尝试在我创建的应用程序中开发嵌入式Web服务器。从本质上说,我们有一个主要的过程来创建一个简单的Web服务器(利用ServerSocket),然后主要的过程(理论上)将处理它的业务Java 在非服务器应用程序中嵌入ServerSockets,java,multithreading,networking,blocking,Java,Multithreading,Networking,Blocking,我一直在尝试在我创建的应用程序中开发嵌入式Web服务器。从本质上说,我们有一个主要的过程来创建一个简单的Web服务器(利用ServerSocket),然后主要的过程(理论上)将处理它的业务 Main(){ doingStuff(); WebServer server = new WebServer(); server.run(); doingMoreStuff(); } public class WebServer implements Runnable{
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();
}
}
}
在前面的psuedo代码中,我知道带有ServerSocket accept()调用的线程会阻塞,从而停止WebServer类线程以及主线程。有什么我遗漏的吗
我知道我可以创建两个程序,它们可以作为单独的进程同时运行,但我希望避免任何IPC,而是争取在一个线程中处理数据,在单独的线程中接收数据的通用serversocket。虽然我对这一切还不熟悉,但我相当肯定这是我忽略的简单事情之一,但我非常感谢您提供的任何帮助。在可运行的上调用.run()
不会使它在新线程中运行,而是在当前线程中运行
你的意思是做新线程(服务器).start()
?啊,我完全忘了。我过去只是扩展Thread类,而不是使用runnable接口。这就是多年来没有为您使用Java的原因。谢谢