java线程安全问题和可变字符串栈内存溢出

本文探讨了Java线程安全问题,以T1和T2线程并发访问 Dept 类的 name 属性为例。此外,文章还讲解了可变字符串可能导致的内存溢出情况,尤其是当线程请求过多时,每个线程的栈内存分配不足,从而引发栈内存溢出。递归操作或无终止的死循环是导致栈溢出的常见原因。文章通过对比展示了线程不安全和线程安全的场景。
摘要由CSDN通过智能技术生成

线程安全(java)

引言:一为T1,T2线程想要调用Dept中的name属性发生的线程安全问题

二、可变字符串举例
请求过多会造成内存溢出,如代码

栈内存溢出:每一个线程对应着一个栈,栈会分配内存,此时如果请求过多,这时候内存不够了,就会发生栈内存溢出。

栈溢出是指不断的调用方法,不断的压栈,最终超出了栈允许的栈深度,就会发生栈溢出,比如递归操作没有终止,死循环

public class TestString1 {
   
    public static void main(String[] args) throws Exception {
   
		//二、可变字符串举例
        //可变字符串
        //StringBuffer(线程安全),StringBuilder
        //new:一个线程进来就创建一次
        //具体使用Stringbuffer还是StringBuilder还是要看使用场景
        //由于目前使用的是多例模式,所以使用StringBuilder不影响线程安全
        StringBuilder buff = new StringBuilder();
        String s = "";
        for (int i = 0
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值