大白话描述如何理解多线程

多线程就是多条线程,多条线程一起工作避免不了资源抢占的问题,互斥锁之类的同步机制是为了避免这种问题。

什么场景下需要使用多线程。
比如大家最常用的迅雷下载,如果只是单线程工作,将可能出现界面响应缓慢,卡死之类的问题,造成用户体验差。

如果我们做一个下载器,用多线程工作,多线程负责下载之类的耗时操作,主线程展示界面,响应用户事件。
用户下载一个东西A,就开辟一条线程A去处理,再下载一个东西B就再开一条线程B,因为A、B线程互不影响,各自独立,
如果需要使用到可能都会用到的变量,就加上互斥锁去同步。

想到一个场景,一个3房一厅的商品房,假如3个房间分别住着一个人,他们分别代号A、B、C(3个不同的线程),客厅(主界面)代号M。

客厅里面只有一个吹风机,几把门锁。
某天早上起来,A拿着吹风机吹头发,B急着上班,表示让他先吹,A同意了,把吹风机让给了B。C这时候不乐意了,
我要去见女友,也要吹头发,让我先吹,B不答应。然后B、C开始争论,最后在客厅打了起来,打坏了很多东西,
这时候邻居(指代用户)想过来借水喝,结果客厅都站不住脚,就走了(程序卡死,用户无法使用)。

后来3个人想到一招,客厅不是有锁么,用锁!于是有天早上C先起来,就把吹风机和锁拿走,进去自己房间吹头发,顺便把门锁上。
这时候B想过来抢吹风机,发现门被锁了,进不去,只能在门口等着,A来了,也只能在门口等。
终于C吹完了,把吹风机和锁丢了出来,A、B去抢,A先拿到了吹风机,拿了一把锁,马上跑回房间锁门,吹头发。B只能继续等。
等A、C都去上班了,才等到B。B心里想,下次我得起早点先拿到钥匙和锁才行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值