2021-08-18

											多线程概述
开发工具与关键技术: Java
撰写时间:2021/8/18

现代操作系统(windows,macOS,Linux)都可以执行多任务。多任务就算同时运行多个任务。例如:你的电脑后台同时运行谷歌浏览器、QQ音乐、QQ等软件
我们电脑的CPU执行都是一条一条顺序执行的,但是,即使是单核cpu,也可以同时运行多个任务,因为操作系统执行多任务实际上就算让cpu多个任务轮流交替执行
例如:我们要进行洗菜、煮饭、扫地。我们可以洗一下菜,又去煮饭,又去扫地。
这样轮流做下去,就看上去像同时执行3门家务一样
类似的,操作系统轮流让多个任务交替执行,例如,让浏览器执行0.001秒,让QQ执行0.001秒,再让音乐播放器执行0.001秒,在人看来,cpu就是在同时执行多个任务
即使是多核CPU,因为通常任务的远远多于cpu的核数,所以任务也是交替执行的
进程
在计算中,我们把一个任务称为一个进程,浏览器就算一个进程,视频播放器就是另外一个进程,类似的,音乐播放器和word都是进程
某些进程内部还需要同时执行多个子任务。例如,我们在使用World时,World可以让我们一边打字,一边进行拼写检查,同时还可以在后台打印,我们把子任务称为线程
操作系统调度的最小任务单位其实不是进程,而是线程,常用的windows、Linux等操作系统都采用抢占式多任务,如何调度线程完全由操作系统决定,程序自己不能决定什么时候,以及执行多长时间
因为同一个应用程序,既可以有多个进程,也可以有多个线程,因此,实现多任务的方法,
有以下几种:
多进程模式(每个线程只有一个线程)
多线程模式(一个线程进程有多个线程)
多进程+多线程模式
进程vs线程
进程和线程是包含关系,但是多任务既可以由多进程实现,也可以由单进程内的多多线程实现,还可以混合多进程+多线程
具体采用哪种方式,要考虑到进程和线程的特点。
和多线程相比,多进程的缺点在于:
创建进程比创建线程开销大,尤其是在Windows系统上;
进程间通信比线程间通信慢,因为线程间通信就算读写同一个变量,速度很快。
而多线程的优点在于:
多线程稳定性比多线程高,因为多进程的情况下,一个进程奔溃不会影响其他线程,而在多线程的情况下,任何一个线程奔溃会直接导致整个进程崩溃
多线程
Java语言内置了多线程支持:一个java程序实际上是一个JVM进程,JVM进程用一个主线程来执行main()方法,在main()方法内部,我们又可以启动多个线程,此外,JVM还有负责垃圾的其他工作线程等。
因此,对于大多数java程序来说,我们说多任务,实际是说如何使用多线程实现多任务。
和单线程相比,多线程编程的特点在于:多线程经常需要读写共享数据,并且需要同步,列入播放电影时,就必须由一个线程播放视频,另外一个线程播放音频,两个线程需要协调运行,否则画面和声音就不同步。因此,多线程编程的复杂度高,调试更困难。
Java多线程编程的特点又在于:
多线程模型是java程序最基本的的并发模型;
后续读写网络,数据库,Web开发等都依赖java多线程模型
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值