Java用字符串做同步对象的注意事项

本文探讨了使用字符串作为线程同步变量在Java中的特殊注意事项。强调了由于字符串在内存中的存储方式,可能导致看似相等的字符串实际上并不相同,尤其是在Java和C#中。文章推荐了一种最佳实践,即使用intern()方法确保字符串驻留在字符串池中,从而实现真正的引用相等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

很多时候用字符串做线程同步变量是非常具有一定优势的,可以动态利用业务数据来进行。但字符串在很多编程语言中的处理都是比较特殊的,因此需要注意,我们认为的字符串相等,可能实际上在内存中是不相等的,这对于java和c#来说尤其如此。字符串是放在堆里面还是栈里面有很大的区别。记住,在Java中用字符串做同步,一定要用如下用法:

String theSychString =("LOADVALUESXXXX"+RefCode).intern();

intern()的调用确保字符串是在栈里面,是同一个东西。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值