2012-01-20 83 views
2

我一直在尝试在我创建的应用程序中开发嵌入式Web服务器。基本上,我们有我们的主要过程,创建一个简单的网络服务器(利用ServerSocket),然后主要过程(理论上)将关于它的业务。在非服务器应用程序中嵌入ServerSockets

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的螺纹接受()调用块,停止所述Web服务器类线程以及主线程。有什么我失踪?

我知道我可以创建两个程序,它们可以作为单独的进程一起运行,但是我希望避免任何IPC并针对单个进程使用一个线程中的数据处理和通用服务器接收数据一个单独的线程。虽然我仍然对这一切感到陌生,但我确信这是我忽略的那些简单事情之一,但我非常感谢您提供的任何帮助。

回答

2

Runnable上调用.run()不会使其在新线程中运行,而是在当前线程中运行该线程。

您是不是想要做new Thread (server).start()

+0

啊,我完全忘记了这一点。我过去只是扩展了Thread类而不是使用可运行接口。那几年没有为你使用Java。 谢谢! – DigitalGoetz

相关问题