每天进步一点

进程和线程的概念
2020.9.7 增
线程的状态
1.创建(new)状态: 准备好了一个多线程的对象,即执行了new Thread(); 创建完成后就需要为线程分配内存
2.就绪(runnable)状态: 调用了start()方法, 等待CPU进行调度
3.运行(running)状态: 执行run()方法
4.阻塞(blocked)状态: 暂时停止执行线程,将线程挂起(sleep()、wait()、join()、没有获取到锁都会使线程阻塞), 可能将资源交给其它线程使用
5.死亡(terminated)状态: 线程销毁(正常执行完毕、发生异常或者被打断interrupt()都会导致线程终止)


进程: 进程是操作系统资源分配的基本实体
线程: 线程是CPU调度和分配的基本单位
在Linux系统下是没有线程的概念的,它是用进程模拟的线程,因此把线程叫做轻量级进程。

那为什么还要引入线程呢?
1.更加易于调度
2.提高并发性,因为可以创建多个线程去执行同一个进程的不同部分
3.开销少,因为创建进程的话要创建PCB,存放上下文信息,文件信息等等,开销比较大,二创建线程的话开销就会比较少
4.充分发挥多处理器的功能,如果创建出多线程进程,那么可以让线程在不同的处理器上运行,这样不仅可以提高效率,同时也发挥了每个处理器的作用。

进程和线程的关系
1.一个线程只能属于一个进程,但是一个进程可以有多个线程(至少一个线程),一个线程的进程叫做单线程进程,多个线程的进程叫做多线程进程
2.资源分配给进程之后,进程内部的线程都可以共享该进程的资源
3.在处理机上运行的是线程
4.线程在执行的过程中需要协作同步,不同进程的线程需要利用消息通信来实现同步

进程和线程的区别
根本区别: 进程是操作系统分配资源的基本实体,线程是CPU调度的基本单位
开销方面: 每个进程都有自己独立的代码和数据空间,因此进程之间的切换会有较大的开销。但是线程在进程的地址空间内部运行,因此同一类线程共享代码和数据空间,每个线程都有自己独立的运行栈和程序计数器,因此线程之间的切换开销小。
所处环境: 在操作系统中能同时运行多个进程,在同一个进程中有多个线程同时执行
内存分配: 系统在运行的时候会给每个进程分配不同的内存空间,但是不会给线程分配,线程使用的资源均来自于进程
包含关系: 线程是进程的一部分,没有线程的进程叫做单线程进程,有多个线程的进程叫做多线程进程

全部评论

相关推荐

头像
点赞 评论 收藏
转发
点赞 评论 收藏
转发
点赞 收藏 评论
分享
牛客网
牛客企业服务