关于java 线程安全的总结

线程安全:

何为线程安全?在JVM分配的内存空间中,当一份数据被多个线程访问时,如果涉及修改,此时数据按照正常逻辑变化,而不是发生一些意想不到的结果,此时该数据为线程安全

java中哪些线程安全

1.变量:局部变量与实例变量,局部变量在每次方法调用时,都会开辟栈空间,不涉及到共用一份内存中的数据,同理实例变量也一样,所有线程安全

               类变量(static),在内存中共享一份内存空间,因此为非线程安全

2.方法:如果类方法与实例方法中不涉及到对静态变量的修改等操作,则也为线程安全

解决方式:

1.使用代码锁机制,也就是synchronized,对内存中共享的数据采用锁机制,每次只允许一个线程进行访问修改,采用以时间换空间,保证数据一致性

2.使用ThreadLoacle机制,也就是线程局部变量,每个线程都会分配一份数据,线程对该数据的改动都是基于线程自己的,而不会影响到其他线程,保证了各线程数据的一致性,采用以空间换时间的机制

总结:

结合java 内存空间的分配来理解多线程安全问题

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值