首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

String,String Builder,String Buffer 引起的面试惨案

在编译的是时候,会将monitorexit指令插入同步代码块的开始位置,而monitorexit插入方法结束处和异常处,并且每一个monitorexit都有一个与之对应的monitorexit。   ...任何对象都有一个monitor与之关联,当一个monitor被持有后,它将被处于锁定状态,线程执行monitorenter指令时间,会尝试获取对象所对应的monitor的所有权,即获取获得对象的锁,由于在编译期会将...monitorexit插入方法结束处和异常处,所以在方法执行完毕或者出现异常的情况会自动释放锁。...轻量级锁加锁过程,线程在执行同步块之前,JVM会在当前线程的栈帧中创建用于存储锁记录的空间,并将对象头的Mark Word复制锁记录(Displaced Mark Word)中,然后线程尝试使用CAS...这个主要是由于CPU的时间片原因,可能执行一半被挂起了,然后别的线程把值给改了,这个时候程序就可能将错误的值设置进去,导致结果异常。

75131

再说String

在前两个月的时间内,我在园子里发表的两片介绍字符串的恒定性和字符串驻留的文章:《字符串的驻留(String Interning)》和《深入理解string和如何高效地使用string》。...String主要具有以下的两个显著的特点: String的恒定性:String一经创建,它所对应的字符序列就无法更改(当然我们的前提是托管的环境下)。...String的驻留:CLR对String的创建实行驻留机制,CLR只会维护具有不同字符序列的String。...的,Interning table的Key为string本身,Value为string对象的地址。...如果成功找到,则直接把对应的引用返回,否则就在SystemDomain对应的managed heap中创建该string,并加入Interning table中,并把引用返回。

30610
领券