操作系统中同时执行多个程序原因:

1、资源利用率:系统资源及硬件资源。当一个程序再等待另一个程序时,可以运行另一个程序,可提高资源利用率。

2、公平性:多个程序对计算机上的资源理论上具有同等的使用权。可以通过时间分片等手段使程序共享计算机资源,非一个程序从头到尾执行完毕后,另一个程序才可以得到执行。

3、协作高效:执行多个任务时,应该使用多个程序,然后由这些程序相互通信相互调用,比编写一个程序实现所有任务更容易实现。

串行编程模型优势:直观和简单。按照顺序执行时促使了进程的出现。

进程与线程的关系:

一个进程可以包含多个线程,线程即是一个进程中为提高单个进程执行效率而出现的。现代操作系统基本以线程为基本的调度单位,而不是进程。

线程共享所处进程范围内的资源,比如内存句柄和文件句柄,线程独占各自的程序计数器、栈及局部变量。线程可根据多处理器系统的硬件达到更好的并行性。如果无协同机制,线程可在进程中独立执行。

线程的优势:

1、通过更高效的使用系统资源,有效降低程序的开发和维护成本,提升复杂应用的性能。线程使用得当可降低编程人员代码的复杂度,使代码更容易编写、阅读和维护。发挥多处理器的强大能力。

2、建模的简易性,当一个多任务的程序在执行时,通过将每个任务分配给专门的线程去执行,这样程序的执行逻辑、调度机制、交替执行的操作、异步I/O以及资源等待等问题分离,达到将复杂的的工作流进一步分解,成为一组简单并且同步的工作流,每个工作流在专门的线程中进行,在特定的同步位置进行交互。

3、异步事件的简化处理,单线程请求会出现I/O阻塞情况,某个请求出现阻塞,其他请求需要同步等待。多线程会对每个请求都分配一个专门的线程进行处理,这样请求间是非阻塞I/O。

线程的风险:

1、线程安全性:在没有充足的同步情况下,多个线程中的操作执行顺序是不可预测的。比如  a=1,a++;这种竞态条件问题,多线程下并不安全。

只有将a=1,a++所在方法设置为需同步的(通常使用synchronized关键字)才是线程安全的。

2、活跃性:活跃性问题的形式之一就是“无限循环”,从而使得循环之后的代码无法得到执行。线程的活跃性问题还有:锁等待、死锁、饥饿、活锁。

3、性能问题:频繁的上下文切换操作、cpu调度耗时高于线程执行时间、同步导致的内存总线同步流量增加、编译器对代码的优化被抑制。

Java并发编程之并发简介的更多相关文章

  1. Java并发编程:并发容器之CopyOnWriteArrayList(转载)

    Java并发编程:并发容器之CopyOnWriteArrayList(转载) 原文链接: http://ifeve.com/java-copy-on-write/ Copy-On-Write简称COW ...

  2. Java并发编程:并发容器之ConcurrentHashMap(转载)

    Java并发编程:并发容器之ConcurrentHashMap(转载) 下面这部分内容转载自: http://www.haogongju.net/art/2350374 JDK5中添加了新的concu ...

  3. Java并发编程:并发容器之ConcurrentHashMap

    转载: Java并发编程:并发容器之ConcurrentHashMap JDK5中添加了新的concurrent包,相对同步容器而言,并发容器通过一些机制改进了并发性能.因为同步容器将所有对容器状态的 ...

  4. Java并发编程:并发容器之CopyOnWriteArrayList

    转载: Java并发编程:并发容器之CopyOnWriteArrayList Copy-On-Write简称COW,是一种用于程序设计中的优化策略.其基本思路是,从一开始大家都在共享同一个内容,当某个 ...

  5. Java并发编程:并发容器ConcurrentHashMap

    Java并发编程:并发容器之ConcurrentHashMap(转载) 下面这部分内容转载自: http://www.haogongju.net/art/2350374 JDK5中添加了新的concu ...

  6. 【Java并发编程】并发编程大合集-值得收藏

    http://blog.csdn.net/ns_code/article/details/17539599这个博主的关于java并发编程系列很不错,值得收藏. 为了方便各位网友学习以及方便自己复习之用 ...

  7. 【转】Java并发编程:并发容器之CopyOnWriteArrayList

    Copy-On-Write简称COW,是一种用于程序设计中的优化策略.其基本思路是,从一开始大家都在共享同一个内容,当某个人想要修改这个内容的时候,才会真正把内容Copy出去形成一个新的内容然后再改, ...

  8. 【转】Java并发编程:并发容器之ConcurrentHashMap

    JDK5中添加了新的concurrent包,相对同步容器而言,并发容器通过一些机制改进了并发性能.因为同步容器将所有对容器状态的访问都串行化了,这样保证了线程的安全性,所以这种方法的代价就是严重降低了 ...

  9. Java并发编程:并发容器之ConcurrentHashMap(转)

    本文转自:http://www.cnblogs.com/dolphin0520/p/3932905.html Java并发编程:并发容器之ConcurrentHashMap(转载) 下面这部分内容转载 ...

  10. 11、Java并发编程:并发容器之CopyOnWriteArrayList

    Java并发编程:并发容器之CopyOnWriteArrayList(转载) 原文链接: http://ifeve.com/java-copy-on-write/ Copy-On-Write简称COW ...

随机推荐

  1. 杭电 2097 sky数

    Sky数 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submis ...

  2. Edge Beta Android版更新已启用新图标

    导读 微软Edge Beta Android版更新已启用新图标设计 IT之家消息 适用于Android的Microsoft Edge Beta已于近日获得更新,最显著的特征就是使用了新图标设计.该图标 ...

  3. 使用 OClint 进行静态代码分析

    OCLint 就是一个建立在 Clang 上的工具,能够发现代码中潜在的问题. 最近需要一个静态分析代码工具,帮助我们发布运行应用前找到代码潜在的问题. 其实对于iOS开发,我们的日常开发上已经用到了 ...

  4. centos7 ip配置及ssh服务连接

    一.配置ip /etc/sysconfig/network-scripts/ifcfg-ens33 ifcfg-ens33 这个是配置网卡的配置文件,名字可能不一样,大概为:ifcfg-网卡名 TYP ...

  5. iOS开发应用上架必读最新苹果审核规则(史上最全版)

    官方文档 地址https://developer.apple.com/cn/app-store/review/guidelines/ App Store 审核指南 简介 App 正在改变世界,丰富人们 ...

  6. 基于贝叶斯模型和KNN模型分别对手写体数字进行识别

    首先,我们准备了0~9的训练集和测试集,这些手写体全部经过像素转换,用0,1表示,有颜色的区域为0,没有颜色的区域为1.实现代码如下: # 图片处理 # 先将所有图片转为固定宽高,比如32*,然后再进 ...

  7. IVM sdk command

    1.load sdk shell ./auto_load_user.sh 2.查看all端口状态 IVM:0>ifcs show devport 3.查看个别端口状态 IVM:0>ifcs ...

  8. MySQL(window10)加载配置文件的顺序

    mysql加载配置的顺序为:(mysql --help中有详细的说明) C:\WINDOWS\my.ini C:\WINDOWS\my.cnf C:\my.ini C:\my.cnf D:***\my ...

  9. HashMap与HashTable源码学习及效率比较分析

    一.个人学习后的见解: 首先表明学习源码后的个人见解,后续一次依次进行分析: 1.线程安全:HashMap是非线程安全的,HashTable是线程安全的(HashTable中使用了synchroniz ...

  10. 820算法复试 Eratasthene 质数筛选

    Eratasthene 学问之道无他,求其放心而巳矣 https://blog.csdn.net/qq_37653144/article/details/80470029 class Solution ...