【发布时间】:2021-09-18 03:03:53
【问题描述】:
在实现服务器时,我们可以将一个客户端请求委托给一个线程。我读到这种方法的问题是每个线程都有自己的堆栈,这将非常“昂贵”。另一种方法是让服务器成为单线程并在这个服务器线程上实现所有客户端请求,并将 I/O 请求作为非阻塞请求。我的疑问是,如果一个服务器线程同时运行多个客户端请求,服务器代码不会有指令指针、一组局部变量、每个客户端请求的函数调用堆栈,那么这不会像以前一样“昂贵”。我们如何真正节省?
【问题讨论】:
-
单个服务器线程将只有一个指令指针和一组局部变量。但是,是的,必须记住每个客户端的状态,现在必须使用可以与特定客户端关联的堆对象来完成。这是否真的会节省资源,很大程度上取决于底层系统以及它将分配给每个线程的原生资源类型。
标签: java multithreading performance server nonblocking