如何理解进程的顺序性与并发性?

如何理解进程的顺序性与并发性?,第1张

顺序程序设计:

程序顺序执行是指其在处理液岩器上的执行是严格有序的,即只有在前一个 *** 作结束后才能开始后续 *** 作。如果有多个程序,这些程序必须按照调用次序严格有序执行。而且这些程序如果中断,这是允许的,但不停止,中断不会对程序最终造成影响,也就是说程序执行结果与执行速度无关。

举例:

按顺序从上往下求解过程鸡兔同笼程序中第七行给变量赋初值,第八行求鸡的只数,第九行求兔子的只数,最后输出;

并发程序设计:

程序的执行不再是顺序的,一个程序为执行完而另一个程序便以开始执行,程序外部的顺序性消失,程核森序与计算不再一一对应。一组程序的执行在时间上是重叠的。

举例:学生在挂网络课的过程中,可以一闹氏御边挂课一边完成 *** 作系统的作业,两者互不干扰

因为运行的程序慎数不活跃,所以在任务栏的快捷图标被隐藏了,可以根据以下步骤设为全部显示即可:

所需材料:WIN7 64位系统示例。

一、首先鼠标右键点击任务栏的空白区域。

二、d出的菜单内点击“属性”。

三、打开任务栏菜单属性后,点击“任务栏按钮”右边的“箭头”,菜单内选择使用“从不合并”,然后点击“应用”。

四、接着点击通知区域的“自定义”。

五、勾选“始终在任务栏上显示所有图标和通知”并点击“确弊孝吵定”租侍。这样就会显示全部正在运行的程序。

并发编程三要素(线程的安全性问题体现在):

原子性:原子,即一个不可再被分割的颗粒。原子性指的是一个或多个 *** 作要么 全部执行成功要么全部执行失败。

可见性:一个线程对共享变量的修改,另一个线程能够立刻看到。 (synchronized,volatile)

有序性:程序执行的顺序按照代码的先后顺序执行。(处理丛竖器可能会对指令进行 重排序)

出现线程安全问题的原因:

线程切换带来的原子性问题

缓存导致的可见性问题

编译优化带来的有序性问题

解决办法:

JDK Atomic开头的原子类、synchronized、LOCK,可以解决原子性问题

synchronized、volatile、庆世LOCK,可以解决可见性问题

Happens-Before 规则可以解誉郑肢决有序性问题


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8234744.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-14
下一篇 2023-04-14

发表评论

登录后才能评论

评论列表(0条)

保存