与泽西岛的多线程

Gre*_*ory 3 java multithreading asynchronous jax-rs jersey

以下两个链接似乎相互矛盾.我很快就会信任这些文档:

链接1

默认情况下,服务器上的请求处理在同步处理模式下有效

链接2

它已经是多线程的.

我的问题:

哪个是对的.可以同步和多线程吗?

为什么文档会说以下内容?:

如果已知资源方法执行需要很长时间来计算结果,则应使用服务器端异步处理模型

如果文档是正确的,为什么默认操作是同步的?对于用户体验,默认情况下,所有请求在客户端javascript上都是异步的,因此服务器端的默认操作也应该是异步的.

如果客户端不需要按特定顺序提供请求,那么谁在乎操作的"昂贵".不应该所有操作都只是异步吗?

Pau*_*tha 11

默认情况下,服务器上的请求处理在同步处理模式下有效

每个请求都在一个单独的线程上处理.该请求被认为是同步的,因为该请求会保留线程,直到请求完成处理.

它已经是多线程的.

是的,服务器(容器)是多线程的.对于每个进入的请求,都会从线程池中获取一个线程,并且该请求与特定请求相关联.

如果已知资源方法执行需要很长时间来计算结果,则应使用服务器端异步处理模型

是的,这样我们就不会阻止容器线程了.容器线程池中只有很多线程来处理请求.如果我们用长处理请求来保存它们,那么容器可能会用完线程,阻止其他请求进入.在异步处理中,Jersey将线程交给容器,并自己处理请求处理本身线程池,直到进程完成,然后将响应发送到容器,在那里它可以将响应发送回客户端.

如果客户端不需要按特定顺序提供请求,那么谁在乎操作的"昂贵".

不确定客户在这里做了什么.或者至少在您如何提出问题的背景下.抱歉.

不应该所有操作都只是异步吗?

如果所有请求都很快,不一定.虽然你可以为它做一个论证,但这需要性能测试,你可以相互抵制并从那里做出决定的数字.每个系统都不同.

  • @peeskillet只是好奇-球衣容器默认使用的确切线程数是多少? (3认同)