快好知 kuaihz

java如何保证线程安全

并发(concurrency)一个并不陌生的词,简单来说,就是cpu在同一时刻执行多个任务。而Java并发则由多线程实现的。在jvm的世界里,线程就像不相干的平行空间,串行在虚拟机中,那么java如何保证线程安全?

网络安全小知识:

保证类线程安全的措施:

不共享线程间的变量;

设置属性变量为不可变变量;

每个共享的可变变量都使用一个确定的锁保护;

1.保证线程安全的思路:

通过架构设计

通过上层的架构设计和业务分析来避免并发场景。比如需要用多线程或分布式集群统计一堆用户的相关统计值,由于用户的统计值是共享数据,因此需要保证线程安全。从业务上分析出用户之间的数据并不共享,因此可以设计一个规则来保证一个用户的计算工作和数据访问只被一个线程或一台机器完成,这样从设计上避免了接下来可能的并发问题。

2.保证类无状态:

有状态会限制横向扩展能力,也可能产生并发问题。如果类是无状态的,那它永远是线程安全的。因此在设计阶段尽可能用无状态的类来满足业务需求。

3.区别原子操作和复合操作:

常见的复合操作包括check-then-act,i++等。

虽然check-then-act从表面上看很简单,但却普遍存在与我们日常的开发中,特别是在数据库存取这一块。比如我们需要在数据库里存一个客户的统计值,当统计值不存在时初始化,当存在时就去更新。如果不把这组逻辑设计为原子性的就很有可能产生出两条这个客户的统计值。

本站提醒您:为了保障自己的安全,在网络中一定要实施网络安全防范措施与应用措施,另外多学习一些网络安全常识和网络安全技术知识也是非常重要的。


本站资源来自互联网,仅供学习,如有侵权,请通知删除,敬请谅解!
搜索建议:java如何保证线程安全  线程  线程词条  保证  保证词条  安全  安全词条  如何  如何词条  java  java词条  
信息云盘病毒

 云盘在线看电影会中毒吗

云盘是一种专业的互联网存储工具,是互联网云技术的产物,它通过互联网为企业和个人提供信息的储存,读取,下载等服务,具有安全稳定、海量存储的特点,是很多年轻人以及企...(展开)