Day28练习java-多执行序

以前的应用程序,在一个行程中只能处理一件事。现在可以在一个行程中包含多个执行序,将程序分割成一些独立工作来分别执行,并且如果运用得当可以大幅提升效能,但是分配不当也可能比单一执行序来得更没有效率。

执行序的生命周期:
在java中执行序叫做Thread物件,可区分为五个阶段
1.起始(New):因为Thread是物件,所以要new出来做使用。
2.准备(Runnable):生成物件後,需要呼叫start(),来告诉CPU已经就绪了。
3.执行(Running):得到CPU的认可,便能执行程序。
4.阻塞(Blocked):因为某种原因停止执行,通常会有三种情况:
(1).封锁(Blocked):呼叫sleep()让出使用权,进入睡眠状态,使用这个方法时需要传入休眠的时间等到时间到,便会从sleeping状态转回Runnable状态。
(2).等待(Wait pool):呼叫wait()让出使用权,进入等待状态,可以使用notify()、notifyAll(),将等待中的执行序移动到Lock pool等候。
(3).锁定池(Lock pool):是指当执行序进入同步(synchronized)程序区块,会竞争物件锁(lock),只有取得lock的执行序,才会回到Runnable状态等待执行。
5.死亡(Dead):一旦执行完run(),便会进入到Dead状态,一旦进入後便无法再被启动,倘若想要再度启动,只能重新建立物件。

以下是实作使用的是继承Thread的方式:
https://ithelp.ithome.com.tw/upload/images/20201013/20130684YfU82H7KNy.png
https://ithelp.ithome.com.tw/upload/images/20201013/20130684RntqklIyIT.png
每次执行都会有两种不同的结果,这是用来模拟两匹马在赛跑的情形
https://ithelp.ithome.com.tw/upload/images/20201013/20130684tshEC2R99i.png
A先跑到25
https://ithelp.ithome.com.tw/upload/images/20201013/20130684iKUyN6tnW1.png
B先跑到25


<<:  Day28 D3js Diagram常见的两点浪漫路径

>>:  踏上在AI时代追求人性之路(3):从人文社会背景出发

用e-paper做普普风格影像显示

这次使用的元件是1.54inch_e-paper_b (黑白红显示) Pin Layout VCC ...

Python 练习

今天也是跟昨天一样,要来练习比较难的题目,就是APCS啦,今天要来练习的题目是APCS 106年3月...

[Day7]C# 鸡础观念- 你有选择障碍吗? 交给 if陈述式 解决吧!

在生活中,我们常常面临选择, 今天午餐吃什麽好呢?饭还是面呢? 明天要去哪里玩?山上还是海边呢? 那...

[Day 21] 测试的型态调整,谈单元测试与整合测试

我们测试过了几个案例,像是 测试更新标签时如过滤Admin,结果应不出现Admin 和 测试更新标签...

EP 4: Use Fonts to design Icon in TopStore App

Hello, 各位 iT邦帮忙 的粉丝们大家好~~~ 本篇是 Re: 从零开始用 Xamarin 技...