成员变量与局部变量与sychronized和效率与线程安全的关系

从JVM内存的层面来讲,线程不安全是因为多线程共用堆内存引起的,多线程是为了提高程序运行效率而来的,因为成员变量在堆内存中,而局部变量是随栈的所以不会影响线程安全,另外可以通过sychronized(){}修饰代码或方法达到对共用数据的保护。这样我们就有了三种模式,三种模式各有利弊。


1,使用成员变量

优点节约了栈消耗的内存,总体节约了内存

缺点是多线程下会造成线程不安全

2,使用局部变量

优点是不会造成线程不安全

缺点是浪费了栈内存,总体浪费内存,效率也低下

3,使用同步代码块

优点是不会造成线程的不安全,也不浪费内存

缺点是多线程下会造成效率低下




*如果用成员变量多线程下面也是可以确保安全的,就是成员变量设置为只可读不能写final或者只能写一次

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值