Java多线程--常用概念

2021-05-06  本文已影响0人  轻轻敲醒沉睡的心灵

1. 进程和线程

在计算机中,我们把一个任务称为一个进程,浏览器就是一个进程,视频播放器是另一个进程,类似的,音乐播放器和Word都是进程。
某些进程内部还需要同时执行多个子任务。例如,我们在使用Word时,Word可以让我们一边打字,一边进行拼写检查,同时还可以在后台进行打印,我们把子任务称为线程。
进程和线程的关系就是:一个进程可以包含一个或多个线程,但至少会有一个线程。
操作系统调度的最小任务单位其实不是进程,而是线程。常用的Windows、Linux等操作系统都采用抢占式多任务,如何调度线程完全由操作系统决定,程序自己不能决定什么时候执行,以及执行多长时间。
因为同一个应用程序,既可以有多个进程,也可以有多个线程,因此,实现多任务的方法,有以下几种:


和多线程相比,多进程的缺点在于:

多进程的优点在于:

2. 上下文

上下文是指某一时间点CPU寄存器和程序计数器的内容。

3. 上下文切换

巧妙地利用了时间片轮转的方式, CPU 给每个任务都服务一定的时间,然后把当前任务的状态保存下来,在加载下一个任务的状态后,继续服务下一个任务,任务的状态保存及再加载, 这段过程就叫做上下文切换。 时间片轮转的方式使多个任务在同一颗 CPU 上执行变成了可能。

上下文切换
上下文切换可以认为是内核(操作系统的核心)在CPU对于进程(包括线程)进行切换,上下文切换过程中的信息是保存在进程控制块(PCB, Process Control Block)中的。 PCB还经常被称作“切换桢”(switch frame)。信息会一直保存到CPU的内存中,直到他们被再次使用。
上一篇下一篇

猜你喜欢

热点阅读