博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
并发编程的三大注意事项是什么?
阅读量:7112 次
发布时间:2019-06-28

本文共 704 字,大约阅读时间需要 2 分钟。

并发编程的三大注意事项

 

 

答:

1.原子性

即一个操作或者多个操作 要么全部执行并且执行的过程不会被任何因素打断,要么就都不执行。Java内存模型只保证了基本读取和赋值是原子性操作,如果要实现更大范围操作的原子性,可以通过synchronized和Lock来实现。由于synchronized和Lock能够保证任一时刻只有一个线程执行该代码块,那么自然就不存在原子性问题了,从而保证了原子性。

2.有序性

可见性是指当多个线程访问同一个变量时,一个线程修改了这个变量的值,其他线程能够立即看得到修改的值。Java提供了volatile关键字来保证可见性。当一个共享变量被volatile修饰时,它会保证修改的值会立即被更新到主存,当有其他线程需要读取时,它会去内存中读取新值。

 

3.可见性

即程序执行的顺序按照代码的先后顺序执行。一般来说,处理器为了提高程序运行效率,可能会对输入代码进行优化,它不保证程序中各个语句的执行先后顺序同代码中的顺序一致,但是它会保证程序最终执行结果和代码顺序执行的结果是一致的。在Java内存模型中,允许编译器和处理器对指令进行重排序,但是重排序过程不会影响到单线程程序的执行,却会影响到多线程并发执行的正确性。在Java里面,可以通过volatile关键字来保证一定的“有序性”。另外可以通过synchronized和Lock来保证有序性,很显然,synchronized和Lock保证每个时刻是有一个线程执行同步代码,相当于是让线程顺序执行同步代码,自然就保证了有序性

转载于:https://www.cnblogs.com/chinaifae/p/10189001.html

你可能感兴趣的文章
《Python入门》Windows 7下Python Web开发环境搭建笔记
查看>>
[WinAPI] 串口读写
查看>>
[Android] 字体使用dp单位避免设置系统字体大小对排版的影响
查看>>
[LeetCode] Detect Capital 检测大写格式
查看>>
HDU 2037 今年暑假不AC(贪心,区间更新,板子题)
查看>>
Zookeeper~Linux环境下的部署
查看>>
配置IP
查看>>
C#线程访问winform窗体控件
查看>>
apiCloud中的数据库操作mcm-js-sdk的使用
查看>>
Java系列之EJB
查看>>
change和onchange、click和onclick的区别
查看>>
EF架构~有时使用SQL更方便
查看>>
Docker部署zabbix3.2监控系统
查看>>
[zt]OpenCV如何获取视频当前的一帧图像
查看>>
Jenkins内置环境变量的使用
查看>>
《微信生活白皮书》发布微信用户数据
查看>>
The frequent used operation in Linux system
查看>>
PyQt5 结合 matplotlib 时,如何显示其 NavigationToolbar
查看>>
★一名“标题党”自我修炼的10…
查看>>
Redis基础知识之————使用技巧(持续更新中.....)
查看>>