java - 使用不同端口与 intern() 运行 2 个 Tomcat 服务器是否会锁定相同的 id?

标签 java string multithreading intern synchronize

在我的 Tomcat 服务器 Java 代码中,我使用以下代码:

int port = 11111;
rmiConnectToMainServer(port);
id = request.getParameter("id").intern();
synchronized(id) {
    //call SaleFunction();
}

以及在另一个Tomcat服务器中的端口

int port = 22222;

问题是: String.intern() 调用是否使用另一个字符串池?或者没有??

假设一个 id=1234 的客户同时从两个 Tomcat 服务器购买,他会被锁定吗???或者可以无锁购买???

请帮助我,我的应用程序现已上线..我担心如果出现问题。

提前谢谢

最佳答案

每个 JVM 有一个字符串池,因此当您的 Tomcat 实例在不同的 JVM 中运行时,您的 “id” 将不会被共享。

关于java - 使用不同端口与 intern() 运行 2 个 Tomcat 服务器是否会锁定相同的 id?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30571696/

相关文章:

java - 玩!关于 dokku 内存问题的框架(堆对象)

c++ - 如何将 ifstream 或字符串输入转换为 char?

Python:解析 JSON 时出现 Keyerror

c# - 检查线程的单元类型是 MTA 还是 STA?

java - 在 Java 中强制进行虚假唤醒

node.js - Electron/NodeJS 和应用程序在 setInterval/async 代码上卡住

java - 有什么方法可以将 @XmlElement List<String> fieldName 编码(marshal)至 <fieldName xsi :nil ="true". ../> 而不是缺失的节点?

java - 不同类型的数组声明

java - 恒定时间/空间复杂度概念的混淆

c - 在 C 中的字符串数组中搜索字符串的有效方法。(不区分大小写)