gpt4 book ai didi

java - ThreadLocal 反模式的替代品?

转载 作者:行者123 更新时间:2023-12-01 08:10:32 28 4
gpt4 key购买 nike

在一次工作 session 上。我听说Thread Local绝对是一种反模式,因为新的应用程序服务器使用称为新IO的新线程技术。事实上,他们告诉我ThreadLocal的问题是一个完整的线程必须等待数据库查询返回响应,这绝对是浪费资源(内存和CPU)。新开发的线程策略使用线程池,因此当不再需要线程时,它将返回到池中。我听说这项新技术是在新的AS中实现的,例如我们的Jboss,Websphere......(我是没有把握)。例如,我可以在本地使用 Apache tomcat 吗?(如果有关于这一事实的可能文档)

最佳答案

ThreadLocal 是故事中的配角。您听说过的是异步请求处理,NIO 库对此提供了帮助。

在这种编程范例中,您不会得到像这样的简单方法

Response processRequest(Request req)

相反,你会得到

void requestReceived(Request req, Response resp)

在这个方法中,您通常会通过准备后端请求并调用其方法来开始处理,如下所示

execute(Query q, ResultCallback cb)

框架将调用您的ResultCallback的方法resultReady(Result res),其中将包含查询结果。

这里的要点是,方法requestReceived立即返回,并且在后端处理后端请求时不会占用线程子系统。

顺便说一句,这种编程风格的另一个名称是连续传递风格或 CPS。这是因为当你调用一个函数时,你不会等待它的返回值,而是向其中传递一个回调函数,该回调函数将使用函数的结果进行调用,并且它实现了总的延续请求处理。

ThreadLocal 如何融入其中

如果您遵循了我上面所说的,您应该已经清楚,在这种请求处理方式中,ThreadLocal 是一个无用的概念,因为请求处理可以自由地从线程跳转到线程。线程,并且以一种完全超出您控制范围的方式。

关于java - ThreadLocal 反模式的替代品?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17832253/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com