进程与线程

生活

为API生,为框架死,为debug奋斗一辈子,吃符号亏,上大小写的当,最后死在需求上

在计算机相关的学习,我不提倡死记硬背,很多人,认为面试回答一些概念问题,就要回答的跟书上一模一样,其实不然,总结挺重要的,以前不懂,现在发现,怎的很重要!

今天看到了Thread、ThreadLocal的源码,在java的开发过程中对于线程的操作远远多于也方便于进程的操作。
这里有必要了解一下 进程和线程的概念。

这里仅做自己的记录,可能很多术语会口语化。

进程

进程可以理解为程序,一个程序,一个进程。
一个单核的CPU在同一个时间片只能执行一个进程,由于CPU切换进程的速度非常快,以至于我们认为他是同事执行的。
举个例子:
1个2.5GHZ主频的单核CPU,其意思说这个CPU可以在1秒钟内在多个进程之间来回切换 2.5*10的九次方次。
快到看不出来,当然也会有卡的时候。
进程有三部分组成:
1、数据集 即执行过程需要的资源
2、程序 描述要完成的功能以及如何完成
3、程序控制块 操作系统利用程序控制块来控制进程的执行切换。

线程

线程的概念:
是进程的最小执行单元。
目的是:
避免不必要的进程间通信(非常耗费性能),降低上下文切换的消耗,提高并发性,一个进程内可以有多个线程并发执行。
CPU分配资源给进程,线程共享进程的资源。
线程由:
寄存器,程序计数器,堆栈组成。

关于进程的切换

进程切换的切换者是操作系统。
什么时候会切换?
1、到达CPU时间片
2、IO [当A进程有IO操作,耗时较长的话,CPU就会切换到程序B运行]
3、程序优先级切换(linux 通过 nice(进程拉起时)/ renice(进程执行时) 来调整优先级)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值