在非服务器应用程序中嵌入ServerSockets

时间:2012-01-20 17:08:58

标签: java multithreading networking blocking

我一直在尝试在我创建的应用程序中开发嵌入式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接收数据单独的线程。虽然我对这一切还不熟悉,但我很确定这是我忽略的那些简单的事情之一,但我非常感谢你能提供的任何帮助。

1 个答案:

答案 0 :(得分:2)

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

您的意思是new Thread (server).start ()吗?