浅析Java多线程

浅析Java多线程

进程和线程的区别

1. 定义

进程是具有一定独立功能的程序在某个数据集合上的一次运行活动,是系统进行资源分配和调度的独立单位
线程是进程的一个实体,是CPU调度的的基本单位

2. 联系

线程更近乎执行体的概念,可以和程序中的其他线程共享数据,同时拥有少许运行中不可获取的资源,如程序计数器,一组寄存器和栈

3. 区别
  • 进程是资源分配和调度的基本单元,线程是CPU调度的基本单元
  • 一个进程至少包含一个线程,线程共享整个进程的寄存器、堆栈、上下文等资源
  • 创建进程调用fork或者vfork,创建线程调用pthread_create
  • 进程结束后销毁它拥有的全部线程,而线程结束则不会影响到其他线程
  • 线程是轻量级的进程,创建和销毁需要的代价比进程小得多,操作系统中的执行功能都是线程去完成的
  • 由于线程共享进程的所有资源,所以操作时需要进行同步或者异步操作
  • 线程拥有自己的私有属性控制块PCB,线程拥有自己的私有属性TCB、线程id、寄存器,这些事标识一个进程或者线程的标志,不能被共享

进程的运行状态

  • 运行态
    进程处于就绪状态被调度后,进程进入执行状态
  • 就绪态
    进程已经准备就绪,所需资源已经分配,分配到CPU就能够立即运行
  • 阻塞态
    进程因等待某件事(IO请求等)发生而暂时不能运行

运行 —> 就绪
1,CPU时间片使用完
2,有优先级更高的任务需要执行,让出CPU
就绪 —> 运行
被调度从调度队列中选中,获取到了CPU时间片
运行 —> 就绪
正在执行的进程因为等待事件而无法执行,由执行状态变为阻塞状态
阻塞 —> 就绪
等待事件消失,进入就绪队列

线程的运行状态

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值