在我看来,SELECT
CD.company_id,
CD.company_name,
OD.officer_name,
CO.officer_role
FROM
company_details CD
INNER JOIN company_officer CO
ON CD.company_id = CO.company_id
INNER JOIN officer_details OD
ON CO.officer_id = OD.officer_id
WHERE CD.company_index='FTSE 100' AND
OD.officer_resigned='0';
的值和本地var private String uri
的值在任何时候都是相同的。
但事实上,我测试了很多次,有时两个值不一样,为什么呢? NanoHTTPD发生了什么?
猜测
我想函数String newURI
是进程public Response serve(IHTTPSession session)
中的muilti线程,
不同的线程操作这两个值,所以有时uri和newURL有不同的值,对吗?
public class HttpServer extends NanoHTTPD
答案 0 :(得分:0)
那是因为NanoHTTPD是多线程的。
每个客户端套接字都会产生一个跟踪特定IHTTPSession的线程,并最终调用NanoHTTPD#serve(IHTTPSession)。
这意味着如果您同时收到2个请求,则同时调用NanoHTTPD#serve(IHTTPSession)两次。 如果您对并发有任何了解,那么您已经知道自己做错了什么。
NanoHTTP的设计使您需要做的就是覆盖NanoHTTPD#serve(IHTTPSession),并且您可以使用Web服务器。 您并不打算在服务器中存储与会话相关的数据,因为显然服务器很可能在任何给定时间都有多个会话处于活动状态。
它的工作方式很快就会在v3.0.0中发生变化,因此它变得更加万无一失。