从「哪吒抢笔」学习多线程编程

maliang 原创
2019-08-04 环球百事网

(*)

最近刚看完大热的《哪吒之魔童降世》,唯美的中国风、催泪的剧情、打破固有的成见、解开命运的枷锁......饺子导演带领团队十一年磨一剑的幕后制作故事让人深受感动,实乃国漫良心之作。

这熟悉的资源争夺,不正像是多线程并发执行引发的竞争状态吗?多线程编程早已不是一个新鲜概念,在现代计算机的硬件支持下,开启多个线程分段执行耗时任务已成为一种常见的性能优化手段,并且使用多线程还可以充分利用 CPU 的资源。

(*)

要理解多线程,需要先搞懂几个概念:

线程和进程的区别在于,子进程和父进程有不同的代码和数据空间而多个线程则共享数据空间,每个线程有自己的执行堆栈和程序计数器为其执行上下文。多线程主要是为了节约 CPU 时间,线程的运行中需要使用计算机的内存资源和 CPU。

(*)

下面我们就使用多线程来模拟一下四人抢笔的这段剧情。

先新建一个江山社稷图类:

(*)

哪吒、太乙真人、敖丙、申公豹都有抢笔动作和打开社稷图动作,我们新建一个接口类来表示这两个动作:

(*)

接下来创建哪吒、太乙真人、敖丙、申公豹四个对象,实现此接口:

然后我们新建一个 Fight 类,模拟四人的抢笔场景,程序流程如下:

(*)

可以看到,我们在代码中通过 getPen() 方法获取江山社稷图中的 pen 字段,在 openPainting() 方法中,花费一秒钟的时间打开江山社稷图,然后将 pen 字段置为 false ,表示笔已被使用。太乙真人、敖丙和申公豹类的代码是类似的:

太乙真人:

(*)

敖丙:

(*)

申公豹:

(*)

哪吒:

(*)

全国魅族门店接连倒闭!纷纷改卖华为,店员:活不下去! 官方实锤来了!vivo NEX 新品真机图亮相:双曲面「瀑布屏」 “爸再也不打骂你了…”12岁男孩杨中源,你爸找你12天了 以“ADAS主动安全硬件+车辆驾驶智能风控系统”切入商用车保险市场,“路上智驾”要做车联网应用服务商 微星将展示MS-9A89嵌入式电脑,可在-20℃到70°C环境下正常工作 国产快递巨头崩盘!老总5个月套现146亿,如今“卖身”阿里!
热门文章
为你推荐