线程的基本概念、线程的基本状态以及状态之间的基本关系?进程与线程之间的关系;一个CPU如何同时执行多个线程

首先应该搞清楚什么是进程,进程是计算机的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统的结构基础,在早期的面向进程设计的计算机结构中,进程是程序的基本执行实体;在当代面向线程设计的计算机结构中,进程是线程的容器;
那他们之间的关系是什么?就拿电脑上运行的qq来说,QQ这个程序就是一个进程,如果你要在同一个电脑上同时登录两个账号,这两个账号每一个都算一个线程,他们共同享有计算机分配给QQ这个进程的资源,通常来将,一个进程可以包含多个线程,所以,线程算是进程的更小拆分。
线程的基本概念:一个程序中(进程)可以有多条线索(线程)同时执行,每个线索上都关联有要执行的代码;并且每个程序都至少有一个线程。为什么必须要有一个线程呢?因为,我们都知道程序的入口是main方法,所有,一个程序想要执行,就必须有main 方法,而main方法本身就是一个线程
如果只有一个CPU,为什么能够同时执行多段程序呢?其实这只是宏观上的感觉,微观上将,CPU不能同时执行多个线程,之所以给我们的感觉像是同时在执行,在于CPU可以非常快速的在多个线程的执行之间切换,它一会执行一下这个线程,一会执行一下另一个线程,由于切换的时间非常短暂,给我们的感觉就想是在同时执行。**举个例子:**家里只有一个WiFi,也就是说只有一条网线接入万维网,那为什么能同时支持多部设备上网呢?因为WiFi一会为这个设备传输数据,一会为另一个设备传输数据,间隔很小,就想是在同时上网。
线程的基本状态:

就绪
运行
结束
wait
sleep
synchronized阻塞

图是随便做的,有很多细节没有加,不过可以大致表示出线程的几种基本状态,如有错误希望大佬指正。还有就是wait必须在synchronized 内部调用
状态之间的关系
首先,调用线程的start方法后,线程进入就绪状态,此时的线程在等待CPU分配资源(时间片:即分配给程序运行的时间,如果超过这个时间程序还在运行,那么CPU会强制结束,把资源分配给其他线程,如果在时间片范围内,程序阻塞或结束,cpu会回收资源分配给其他线程),当CPU分配给当前线程时间片后,线程进入运行状态,这期间如果遇到synchronized语句时,线程由运行状态转为阻塞,当synchronized获得锁后,由阻塞转为运行,在这种情况下可以调用wait方法转为挂起状态,当线程关联的代码执行完后,线程变为结束状态。
以上内容如有错误,希望大佬帮忙指正!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值