多任务

现代操作系统(windows,MacOS,Linux)都可以执行多任务:
多任务就是同时运行多个任务,例如同时开启钉钉、百度网盘、火狐、谷歌、ps等
操作系统执行多任务就是让多个任务交替执行,例如浏览器执行0.001秒,网盘执行0.001秒,钉钉执行0.001秒。因为任务的数量远远多余CPU的数量,因此任务也是交替执行的

进程、线程

进程(Process):一个任务就是一个进程。
线程(Thread):某些进程内部还需要同时执行多个子任务。例如word打字、拼写检查、打印等

进程和线程的关系:

  • 一个进程可以包含一个或多个线程(至少一个线程)

实现多任务的方法:

  • 多进程模式(每个进程只有一个线程)
  • 多线程模式(一个进程有多个线程)
  • 多进程+多线程模式(复杂度最高,一般不考虑)

多进程VS多线程

  • 创建进程比创建线程开销大(尤其是Windows)
  • 进程间通信比线程间通信慢
  • 多进程稳定性比多线程高
    * 多进程:一个进程崩溃不会影响其他的进程
    * 多线程:任何一个线程的崩溃会导致整个进程的崩溃

Java语言内置多线程支持:

  • 一个Java程序实际上是一个JVM进程
  • JVM用一个主线程来执行main()方法
  • 在main()方法中又可以启动多个线程

多线程编程的特点:

  • 多线程需要读写共享数据
  • 多线程经常需要同步。例如看电影,必须由一个线程播放视频,一个线程播放音频。2个线程需要协调运行。否则视频和音频会不同步。
  • 多线程编程的复杂度高,调试更困难

Java多线程编程的特点:

  • 多线程模型是Java程序最基本的并发模型
  • 网络、数据库、web等都是依赖多线程模型
  • 必须掌握Java多线程编程才能继续深入学习

最新文章

  1. Error:failed to find Build Tools revision 23.0.0 rc3
  2. 【Android】Camera 使用浅析
  3. Keepalived+Redis高可用部署
  4. Python获取文件名
  5. 在Eclipse中自定义类似syso的快捷代码模板
  6. 使用 Python 抓取欧洲足球联赛数据
  7. Android和.net API的数据交互
  8. lr 增强窗格中,如何生成调试信息?
  9. NodeJS爬虫系统初探
  10. Contaminated Milk
  11. VMvare虚拟机的安装及新建虚拟机.
  12. MySQL中 and or 查询的优先级
  13. Keras 构建DNN 对用户名检测判断是否为非法用户名(从数据预处理到模型在线预测)
  14. 转:EditPuls 5.0 注册码
  15. macbook air 2012 mid 安装 windows10 双系统遇到错误 no bootable device insert boot disk and press any key
  16. git merge 和 git merge --no-ff
  17. Sql语句导出数据库表结构及查询表视图储存过程名
  18. linq在获取部门层级树种的应用
  19. cf 429 B Working out
  20. FastAdmin 是如何利用 Git 管理插件代码的?

热门文章

  1. 安装rancher以及使用rancher倒入kubernetes集群和添加及管理集群
  2. kudu安装过程中可能出现的问题
  3. Mysql保留字列表
  4. /encrypt和/decrypt端点来进行加密和解密的功能
  5. JVM 内存模型及垃圾回收
  6. 百度跨域搜索demo
  7. SQL的语言分类
  8. Python全栈开发:装饰器实例
  9. sort的cmp函数
  10. 基于SpringBoot+AntDesign的快速开发平台,JeecgBoot 2.0.2 版本发布