java编程基础总结——28.进程、线程、协程

一、 进程:process

    操作系统的基本单位
    直接申请独立的内存
    操作系统管理资源和任务的基本单位

如果通过网络,每个进程会占据一个端口,可以理解成一个软件,进程有独立的内存空间

把操作系统理解成一个小区,那么进程就相当于一户户人家


二、 线程:thread

    依赖于进程

    线程是最小量级的进程(是进程的子元素)

    轻量级的进程

三、 协程:coroutine

轻量级的线程

协程是一种用户态的轻量级线程,协程的调度完全由用户控制。

协程不是进程或线程,其执行过程更类似于子例程,或者说不带返回值的函数调用。

四、线程和进程总结及选择:

1. 依赖于进程,一个进程可以有多个线程,也可以有多个线程

2. 都可以处理高并发,但是进程是向操作系统直接去申请的,重量级的,所以释放和创建,效率低

而线程是依赖于进程的,不需要向操作系统申请,cpu调度执行,速度较快。一般情况下优先选择线程进行高并发编程

3. 进程具有独立性,每个进程有自己的虚拟地址空间,一个进程挂了不会影响其他进程。如qq挂了,不会影响微信(两个独立进程)

一个线程挂了,可能影响其他进程,甚至导致整个进程崩溃

因此对安全稳定性要求较高时,需要优先选择进程进行高并发编程。

4. 进程 资源消耗大,效率较低,但是比较稳定

   线程资源消耗小,效率较高,但是稳定性较差

五、线程和协程总结:

1.   一个线程可以多个协程,一个进程也可以单独拥有多个协程

2.  线程进程都是同步机制,而协程则是异步机制

3. 多个线程相对独立,有自己的上下文,切换受系统控制;而协程也相对独立,有自己的上下文,但是其切换由自己控制,由当前协程切换到其他协程由当前协程来控制。

4.  协程是用户态的轻量级线程,不受内核调度;线程是任务调度和系统执行的最小单位,需要内核调度。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值