3.进程和线程
进程: 理解:在多任务系统中,一个运行的程序就代表着一个进程。如Windows系统中的任务管理器中可以查看 的正在运行的软件和系统进程。单个CPU中同一时间只能处理一个进程,但我们所见是同时运行着 多个软件,这是为什么呢?实际情况这是由操纵系统负责对CPU资源停止调度和分配管理的,虽然 单个CPU在某一时刻只能做一件事,但是它以非常小的时间间隔切换来执行多个程序,人用弱眼根 无法察觉CPU在往返交替执行多个程序,所以给人以在同一时刻同时执行多个程序的感觉。如果我 同时打开两个记事本程序A和B,这就是两个不同的进程,A编辑的文稿不会影响到B。因为每一个进 都有独立的代码和数据存储空间,操纵的都是自己空间的数据,所以互不影响。
概念:进程=程序代码段+数据段+ 进程控制块
进程是程序的一次动态执行过程,它对应着从代码加载,执行至执行完毕的一个完整过程,是一个 动态的实体。它有着自己的生命周期,因创建而产生,因调度而运行,因等待资源或事件而被处 于等待状态,因完成任务而退出。
进程的基本状态(主要是三种:就绪、运行、阻塞):
创建进程:进程在创建时需要申请一个空白PCB,向其中填写控制和管理进程的信息,完成资源分配
就绪状态:进程已经准备好,已经分配到所需资源,主要分配到cpu就能运行
运行状态:进程处于就绪状态被调动后,就处于运行状态
阻塞状态:正在执行的进程由于某些事件(I/O请求、缓存区申请失败)而暂时无法运行,进程受到阻塞。在 满足所需条件前进入就绪状态
退出进程:进程退出,或因为程序运行出错,或因为系统终止程序,无法继续运行。
线程: 理解:在单线程中,当程序启动时,就自动发生了一个线程,这个线程称为主线程。主函数main就是在 这个线程上运行的,然后主函数按照程序代码的调用顺序依次往下执行。在这类情况下,当主函 数调用了子函数,主函数必须等待子函数返回以后才能继承往下执行,不能实现两段代码交替执 行的效果。如果要在一个程序中交替执行多段代码,就需要发生多个线程,并指定每一个线程上 所要运行的程序代码,这就是多线程。在Java中创建多线程有两种方法:继承java.lang.Thread 类和实现Runnable接口,并调用Thread类的start方法来启动线程。
概念:一个进程可以包含一个或多个线程,一个线程就是进程外部的一条执行线索。
线程与进程一样具有创建、就绪、运行、阻塞、退出五种基本状态。
关于多线程:
什么是多线程:指程序(一个进程)在运行时产生了不只一个线程
如何实现多线程:关于这个多线程我也没用过。。。明天试试,再写