1:要想了解多线程,必须先了解线程,而要想了解线程,必须先了解进程,因为线程是依赖于进程而存在。

2:什么是进程?
 通过任务管理器我们就看到了进程的存在。
 而通过观察,我们发现只有运行的程序才会出现进程。
 进程:就是正在运行的程序。
 进程是系统进行资源分配和调用的独立单位。每一个进程都有它自己的内存空间和系统资源。
 
3:多进程有什么意义呢?
 单进程的计算机只能做一件事情,而我们现在的计算机都可以做多件事情。
 举例:一边玩游戏(游戏进程),一边听音乐(音乐进程)。
 也就是说现在的计算机都是支持多进程的,可以在一个时间段内执行多个任务。
 并且呢,可以提高CPU的使用率。
 
 问题:
  一边玩游戏,一边听音乐是同时进行的吗?
  不是。因为单CPU在某一个时间点上只能做一件事情。
  而我们在玩游戏,或者听音乐的时候,是CPU在做着程序间的高效切换让我们觉得是同时进行的。
  
4:什么是线程呢?
 在同一个进程内又可以执行多个任务,而这每一个任务我就可以看出是一个线程。
 线程:是程序的执行单元,执行路径。是程序使用CPU的最基本单位。
 单线程:如果程序只有一条执行路径。
 多线程:如果程序有多条执行路径。
 
5:多线程有什么意义呢?
 多线程的存在,不是提高程序的执行速度。其实是为了提高应用程序的使用率。
 程序的执行其实都是在抢CPU的资源,CPU的执行权。
 多个进程是在抢这个资源,而其中的某一个进程如果执行路径比较多,就会有更高的几率抢到CPU的执行权。
 我们是不敢保证哪一个线程能够在哪个时刻抢到,所以线程的执行有随机性。

最新文章

  1. dede首页调用顶级栏目单页内容(如:关于我们)
  2. LeetCode之387. First Unique Character in a String
  3. mysql 命令(二)
  4. 硬链接 and 软链接
  5. 单独卸载vs2010帮助文档HelpView之后的独立安装教程
  6. glassfish服务器默认的网页所在的位置
  7. Hamcrest
  8. Runtime 、 Block
  9. Python Tutorial 学习(八)--Errors and Exceptions
  10. POJ 3237 Tree (树链拆分)
  11. elasticsearch2.3.3安装
  12. Spring Boot 注解详解
  13. RxJS操作符(一)
  14. Tarjan算法(图论)(转)
  15. JVM启动过程
  16. python repr和str
  17. LeetCode - Diameter of Binary Tree
  18. LeetCode 失败的尝试 10. regular expression matching & 正则
  19. 1. DNN神经网络的前向传播(FeedForward)
  20. web前端----Bootstrap框架补充

热门文章

  1. github的代码上传成功但是不显示绿格子(一直拖....心痛的教训.....)
  2. 011-git-将tag推送到远端
  3. 《Python机器学习》笔记(六)
  4. zabbix-2.4.8-1添加MySQL状态监控
  5. ajax发送js类型的数据
  6. MySQL basics
  7. OSI参考模型与排错
  8. 使用ajax进行汽车详情表的查询
  9. Nginx负载均衡案例
  10. 大数据架构之:Kafka