2012-01-20 73 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

相關問題