多线程笔记一

好久没有用过多线程相关的东西了,这次准备回头再复习一遍。 

相信很多朋友学习多线程都会有个疑惑, 这么个东东 什么场景才会用得到? 

先不说什么时候用,咱们先来思考一个问题,为什么要用多线程?

看过多线程的朋友都知道,多线程在运行中,也是互相抢占cpu资源,只有抢占到资源的才能运行。 到这里有些人可能就要疑惑了,既然互相抢占,那跑一个和跑多个 时间不应该是相同的吗?  按照数学算法确实是这个样子,1+1=2 永远成立。

但是有时候程序中,并不是一直在跑代码,可能会有一些响应,一些输入操作等。 

举个例子:

(单线程)

有一组农民甲乙丙丁需要耕田8小时,只有一辆车。如果按照 一个一个排序进行耕种,既甲耕种完了8小时,然后轮到乙使用,依次类推,最后给丁使用。 假设每个人耕种过程中都会休息吃饭上厕所2小时,那么每次当休息吃饭上厕所的时间,车都在空闲中,别人不能使用。最后四个人全部耕种完的时间位40小时。

(多线程)

还是这个耕田,如果换成甲乙丙丁私人抢车,谁抢到谁就可以耕地。如果甲抢到车,他就先去耕地,当他休息吃饭上厕所时,乙丙丁再次重新抢车,新抢到那个可以耕地,依次类推。那么整个过程车没有空闲时间,最后所有耕种完毕的时间为32小时。(纯粹举例,为方便理解,不考虑切换线程消耗的资源)

资源得到了充沛的利用,运转效率大大的提高。减少互相等待的时间。

好了,什么场景才会用得到多线程?

1. 充分利用cpu资源(基本优点)

2. 当程序需要等待网络、IO响应等导致消耗大量执行时间时,可以采用异步多线程的方式来减少程序等待时间,提高程序运行效率。 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值