很多时候用字符串做线程同步变量是非常具有一定优势的,可以动态利用业务数据来进行。但字符串在很多编程语言中的处理都是比较特殊的,因此需要注意,我们认为的字符串相等,可能实际上在内存中是不相等的,这对于java和c#来说尤其如此。字符串是放在堆里面还是栈里面有很大的区别。记住,在Java中用字符串做同步,一定要用如下用法:
String theSychString =("LOADVALUESXXXX"+RefCode).intern();
intern()的调用确保字符串是在栈里面,是同一个东西。
本文探讨了使用字符串作为线程同步变量在Java中的特殊注意事项。强调了由于字符串在内存中的存储方式,可能导致看似相等的字符串实际上并不相同,尤其是在Java和C#中。文章推荐了一种最佳实践,即使用intern()方法确保字符串驻留在字符串池中,从而实现真正的引用相等。
818

被折叠的 条评论
为什么被折叠?



