这是我参与更文挑战的第26天,活动详情查看: 更文挑战
相关文章
Java多线程汇总:Java多线程
一、线程调度顺序
前提: 如果一个进程中同时开三个线程,那么谁先谁后呢?
- 代码实现案例:
1 | java复制代码/** |
- 执行结果如下:
- 注意项:
+ 开启一个线程时,即**new Thread(实例化对象,name)**,为开启的线程取了一个**名字**。
+ 在线程内部可使用**Thread.currentThread().getName()** 获取该线程本身的名称。
- 小结:
+ 通过以上的代码执行结果来看,我们可以得出结论,线程的执行并**不是按照指定的顺序来**,比如我依次开启线程1、2、3,但实际的执行结果并不受我们的控制,而是由**cpu调度器随机调度执行**的!
二、主线程的执行
- 代码实现案例
- 理论上结果:等待三个人看完,最后才是老师看书。
- 实际结果如下:
- 结论:主线程(main()线程)优先执行。
三、线程的并发
并发,在操作系统中,是指一个时间段中有几个程序都处于已启动运行到运行完毕之间,且这几个程序都是在同一个处理机上运行,但任一个时刻点上只有一个程序在处理机上运行。
—-以上摘自百度百科
3.1、龟兔赛跑案例
- 在开始并发之前,我们先来看一个好玩的案例。龟兔赛跑。
- 程序实现
+ 赛道两条
+ 乌龟和兔子
+ 赛道长度
+ 根据历史来看,需要让兔子间隔休息(因为最后兔子输了嘛)
+ sleep(int) 线程休眠,参数单位是毫秒
- 代码实现案例:
1 | java复制代码public class RunGame implements Runnable{ |
- 执行结果:
- 当兔子跑到50米时骄傲自满,睡了觉,导致比赛输掉。
- 正常情况下,兔子肯定会赢,去掉休眠即可,我就不放代码和结果上来了,感兴趣的可以自己试试~
3.2、商品抢购案例
- 并发的场景:
+ 刷猴王雷军发售小米12,首批货源只有100台!!!100台啊!!!
+ 大家知道消息后,纷纷跑来在12点首发时抢购小米12,人数共有500人!
+ 手机,是肯定不够滴~
+ 我们来模拟一下抢购手机的场景
- 代码实现案例:
1 | java复制代码/** |
- 执行结果如下:
- 结论:出现的问题
+ 同一台手机被多人购买
+ 卖出的手机远超库存量
- 通过上面的案例,可以让我们对并发有个大概的了解!这也是我们在实际开发中需要注意的东西!
路漫漫其修远兮,吾必将上下求索~
如果你认为i博主写的不错!写作不易,请点赞、关注、评论给博主一个鼓励吧~hahah
本文转载自: 掘金