对于线程的基础理解

本文介绍了线程的基础概念及如何利用多核CPU提高程序效率,并详细解释了线程的四种基本状态:新建、可运行、死亡和堵塞。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天又重新看了一下线程相关的内容,写下来一点对于线程基础的理解,希望对初学者有所帮助,如果大家在阅读的同时发现有什么错误,希望能够帮我纠正,多谢.

什么是线程

首先,对于一个程序来说,我们的目的是完成某一项或多项任务,在完成任务的过程中要解决多个问题,例如有如下需求:

1/学生输入学号

2/在题库中随机抽取一个问题

3/将问题展示给学生

4/学生作答

5/提交答案

6/匹配正确答案

7/将成绩反馈给学生

8/将成绩记录在数据库中

对于以上需求,我们可以按照顺序一步步完成,每完成一项任务后自动进入下一个任务流程,在此过程中整个程序运行在一个cpu上,依靠业务逻辑进行关联,按照逻辑顺序运行程序,这是一个线程,也是标准的单线程程序.

但是如果我们有一个多核心cpu,在同时能够处理多个程序片段,则可以进行如下改变来提高效率:

1/在学生输入学号的同时抽取问题

2/在反馈成绩时同时写入数据库

这样子能够减少程序运行的总时间,有效提高效率,就像在烧开水的同时洗脸刷牙,两不耽误

同时进行多个业务逻辑的处理/多个任务同时在不同的cpu上运行,就是多线程的基本概念,目的是通过提高cpu的利用率来减少程序运行所消耗的时间

 

线程的四种状态

1 新(New)

刚创建的新鲜线程,还没有被启动过的状态.

2 可运行(Runnable)

有空闲的cpu等着线程去用,没有什么可以阻挡这个线程跑起来,或者没有东西阻挡正在跑着的线程继续皮.

3 死(Dead)

线程的run()方法返回了,即线程完成了他的所有任务,寿终正寝了.或者调用了线程的stop()/desttoy()方法,在线程运行中杀死了这个线程(据说不提倡用,因为线程非正常死亡时cpu占用还没有解除,其余等着该线程结束的线程会一直陷入等待,造成死锁).

4 堵塞(Blocked)

线程被某种因素所阻碍,不能继续运行下去了,但是有某种方法重新让他跑起来

 

 

今天先写到这里,下次重开一章专门写写我对阻塞状态的一点理解.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值