廖雪峰Java11多线程编程-1线程的概念-1多线程简介
2024-08-28 02:29:51
多任务
现代操作系统(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多线程编程才能继续深入学习
最新文章
- Error:failed to find Build Tools revision 23.0.0 rc3
- 【Android】Camera 使用浅析
- Keepalived+Redis高可用部署
- Python获取文件名
- 在Eclipse中自定义类似syso的快捷代码模板
- 使用 Python 抓取欧洲足球联赛数据
- Android和.net API的数据交互
- lr 增强窗格中,如何生成调试信息?
- NodeJS爬虫系统初探
- Contaminated Milk
- VMvare虚拟机的安装及新建虚拟机.
- MySQL中 and or 查询的优先级
- Keras 构建DNN 对用户名检测判断是否为非法用户名(从数据预处理到模型在线预测)
- 转:EditPuls 5.0 注册码
- macbook air 2012 mid 安装 windows10 双系统遇到错误 no bootable device insert boot disk and press any key
- git merge 和 git merge --no-ff
- Sql语句导出数据库表结构及查询表视图储存过程名
- linq在获取部门层级树种的应用
- cf 429 B Working out
- FastAdmin 是如何利用 Git 管理插件代码的?