在Spring引导服务器中,我的Rest控制器类是Multithreaded,许多线程共享(读和写)同一HTTP请求的变量。该程序对于1个HTTP请求是线程安全的。
但是我的程序中有一些静态变量,可用于在同一HTTP请求的Java线程之间共享信息。
我知道当多个HTTP请求一起到达时,这会造成问题。
我应该如何使程序/服务器同时接受多个HTTP请求,而又不弄乱2个不同HTTP请求的变量'logger','abc','xyz'?
一个人该如何声明和使用这些变量?
large
答案 0 :(得分:2)
标准HTTP模型是每个请求一个线程。
新的响应式模型使用Netty和事件总线。
您完全知道,共享的可变数据是多线程访问的问题。您必须编写代码,以便它是线程安全的。使用java.util.concurrent
包。
您犯了一个偏离选择模型的错误。聪明的人很难编写正确的多线程代码。
答案 1 :(得分:0)
Spring有一些功能可以帮助解决此问题,但是由于您尚未共享用例,因此很难提出建议... 要解决此特定问题,您还可以使用不使用锁的AtomicReference。 这是有关如何使用它的很好的教程: http://tutorials.jenkov.com/java-util-concurrent/atomicreference.html