| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> Java知识库 -> 趣味故事掌握多线程基础 - 揭秘大型鞋厂百万并发产能内幕【视频+多图建议收藏】 -> 正文阅读 |
|
[Java知识库]趣味故事掌握多线程基础 - 揭秘大型鞋厂百万并发产能内幕【视频+多图建议收藏】 |
雷学委趣讲编程 - 揭秘大型鞋厂百万产能内幕上次小白一起参观完王总鞋厂后,回去就赶紧把代码工程化搞好了。 同时也大受震撼,王总这个鞋厂月销百万,那算下来每天得有一万双鞋子吧?(小白的数学怕不是体育老师教的!!!) 还有这么大的量,它是怎么做到的啊?这个思想能用在编程里面吗? 哇,小白问出这个问题很有创造性! 哇,雷学委认为多线程这一块很重要啊,很多小白写很多代码,总停留在CRUD或写方法倒腾数据,根本提升不了! 这里学委准备了一个短视频: 《雷学委趣味编程故事汇编》系列之多线程基础 下面学委继续鞋厂流水线进行讲解。 来,我们一起又看看,大型鞋厂生产线下图是生产线一个打包环节的工人们,可爱的妹子们在认真的包装鞋子制品(多么灿烂的笑容啊!) 小白,你看这个车间是不是很多人,很多鞋子。 如果生产一万双鞋子,一百个员工,一人分配一百双鞋子,八小时工作制,那么每个小时不就是12.5双鞋子,还可以吧
不过月销百万双鞋子,按照22天工作,那么每个小时处理的鞋子数量得达到56.8,也就是一分钟一双鞋!
不过,实际情况,很可能工厂同样的量聘请的工人没有这里说的100那么多,但处理的量和工作时长更长,挺辛苦的! 可以看看下面的视频,一直都挺忙碌!
他继续问:那这些生活流水线,交给程序自动化不就好了吗,程序怎么做的?我想学! 好的,那请耐心认真学习。 什么是线程(Thread),不是现成!直观来理解,每一个劳碌工作的工人就像一个线程,然后3.3万双鞋子就是每天的工作量。连续运行21天,就能生产接近100万双鞋子。(后面会把这个代码实现了!小白务必收藏多运行,掌握,这是成为中高级程序员必须迈过的坎)
下面是Java中一个线程的实现:
定义线程有好几种方式,本文只重点展示一种!其他懂的可以评论区留言,验证一下你的知识,哈哈。 运行项目中的LeiXueWeiRunner,可以查看如下运行效果: 没错,线程跟工人一样也是有状态,也会朝气蓬勃,也会精疲力竭的。 线程的状态总共6中的,具体如下图: 雷学委:是的,没错。至于线程等待别的线程(比如调用了join方法)就转变为等待状态(WAITING或TIMED_WAITING)。如果线程执行过程需要获取一个锁定的资源,那么就是阻塞状态(BLOCKED) 小白好像对阻塞状态不太懂? 打个比方,假设你家里只有一串钥匙,几个柜子都用这串钥匙来开,但此时你妹妹在用它来打开A柜子,那你是不是没发去打开B柜子了?只能等她开完把钥匙给你开锁。如果她拿完东西,跑出去玩了,哈哈哈,那结果就你这线程一直等待!!! 嗯,明白了。(小白用力的点头)
不错,你已经掌握了多线程基础,已经学会如何创建线程知道线程的状态,到这里可以三连了! 下面直接看百万订单是如何被处理的?下面学委写了一个新的类(继承了普通工人),其实吧,“高级”打工人也还是打工人,大家都是一样的,应该共同致力搞好工作氛围! 小白你准备好了吗?雷学委要直接上最难代码了。(小白估计只能懂个故事了,代码他估计下次还会来问!) 小白信心满满,上面的那么简单,接下来估计不会难到哪去吧。 下面是高级打工人的代码实现,在看代码后面解析之前,请自己想想为什么要这样写?
下面是调用代码:
此时小白一脸懵了! 代码解析这里学委创建了一个线程安全的队列 LinkedBlockingQueue 和一个记录工人工作情况的一个ConcurrentHashMap。 然后创建100个工人(带上工号,每个工人最大处理包装的数量,对接到鞋子队列,对接到反馈工作状态的map),他们几乎同时的处理队列上的鞋子,完成包装 在Woker类里面,每个员工都会检查是否这个月的工作量达标了handledNum,如果不达标继续包装,可以去休息了。或者流水线上面没有鞋子了,那也可以去休息了。休息之前填一下表,记录一下自己做了多少业绩。 最后在主程序LeiXueWeiRunner02里面,这里其实跟其他100个worker是同时运行的,只是它一直等待所有鞋子处理好(队列清空的情况),然后检查每个工人业绩,统计是否漏单了。 程序最后核对结果为100万,跟最初生成的100万匹配!(这里很值得三连一下的,这不是一个容易的程序) 小白说:懂了道理了,代码还得多看,不太熟啊(我看他压根就没用过吧。) 整个过程也就跟下图一致,还是建议你三连后多看看视频:
这个你得多练!学委只对文章负责,而你需要对自己负责!就像我们看小破站那些教你写字的,别人一会功夫写了一手好字,你写不出来怎么办?多练多写呗,仅此! 另外,建议长期关注学习这个 =>雷学委趣味编程故事汇编。 项目代码记得star不迷路,长期更哦:本文的工程化展示项目
参考链接实拍鞋厂里的生产流水线,原来是这样制作的,真是让我开眼界了! |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/17 20:49:47- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |