我是一个线程(上)

我是一个线程, 我一出生就被编了个号: 0x3704,  然后被领到一个昏暗的屋子里,  这里我发现了很多和我一模一样的同伴。 

我身边的同伴0x6900 待的时间比较长, 他带着沧桑的口气对我说:

我们线程的宿命就是处理包裹。 把包裹处理完以后还得马上回到这里,否则可能永远回不来了。

我一脸懵懂,包裹,什么包裹?

”不要着急,马上你就会明白了, 我们这里是不养闲人的。“

果然,没多久,屋子的门开了, 一个面貌凶恶的家伙吼道: 

"0x3704 ,出来!"

我一出来就被塞了一个沉甸甸的包裹,上面还有附带着一个写满了操作步骤的纸。 

"快去,把这个包裹处理了。"

"去哪儿处理"

"跟着指示走, 先到就绪车间"

果然,地上有指示箭头,跟着它来到了一间明亮的大屋子,这里已经有不少线程了, 大家都很紧张,好像时刻准备着往前冲。

我刚一进来,就听见广播说:“0x3704, 进入车间”

我赶紧往前走, 身后很多人议论说:

 ”他太幸运了, 刚进入就绪状态就能运行“

 ”是不是有关系?“ 

 ”不是,你看人家的优先级多高啊, 唉“

 

前边就是车间, 这里简直是太美了, 怪不得老线程总是唠叨着说:要是能一直待在这里就好了。 

这里空间大,视野好,空气清新,鸟语花香,还有很多从来没见过的人,像服务员一样等着为我服务。 

他们也都有编号, 更重要的是每个人还有个标签,上面写着:硬盘,数据库,内存,网卡...

我现在理解不了,看看操作步骤吧:

第一步:从包裹中取出参数  

打开包裹, 里边有个HttpRequest  对象, 可以取到 userName, password两个参数

第二步:执行登录操作

奥,原来是有人要登录啊,我把userName/password 交给 数据库服务员,他拿着数据, 慢腾腾的走了。  

他怎么这么慢? 不过我是不是正好可以在车间里多待一会儿? 反正也没法执行第三步。

就在这时,车间里的广播响了: 

"0x3704,  我是CPU , 记住你正在执行的步骤, 马上带包裹离开"

我慢腾腾的开始收拾

”快点, 别的线程马上就要进来了“

 

离开这个车间, 又来到一个大屋子,这里很多线程慢腾腾的在喝茶,打牌。

”哥们,你们没事干了?“

”你新来的把, 你不知道我在等数据库服务员给我数据啊! ,据说他们比我们慢好几十万倍, 在这里好好歇吧“

”啊? 这么慢?  我这里有人在登录系统, 能等这么长时间吗"

”放心,你没听说过人间一天, CPU一年吗, 我们这里是用纳秒,毫秒计时的, 人间等待一秒,相当于我们好几天呢, 来的及“

干脆睡一会吧 , 不知道过了多久 ,大喇叭又开始广播了:

"0x3704, 你的数据来了,快去执行”

我转身就往CPU车间跑,发现这里的们只出不进!

后面传来阵阵哄笑声:

”果然是新人, 不知道还得去就绪车间等“

 

于是赶紧到就绪车间, 这次没有那么好运了, 等了好久才被再次叫进CPU车间。

在等待的时候, 我听见有人小声议论:

”听说了吗,最近有个线程被kill掉了“

”为啥啊?“

”这家伙赖在CPU车间不走, 把CPU利用率一直搞成100%,后来就被kill掉了“

”Kill掉以后弄哪儿去了“

”可能被垃圾回收了吧“

我心里打了个寒噤 ,  赶紧接着处理, 收下的动作块多了,第二步登录成功了

第三步:构建登录成功后的主页

这一步有点费时间, 因为有很多HTML需要处理, 不知道代码谁写的,处理起来很烦人。

我正在紧张的制作html呢, CPU有开始叫了:

"0x3704,  我是CPU , 记住你正在执行的步骤, 马上带包裹离开"

”为啥啊“

”每个线程只能在CPU上运行一段时间,到了时间就得让别人用了, 你去就绪车间待着, 等着叫你吧“

 

就这样, 我一直在就绪-运行 这两个状态,不知道轮转了多少次, 终于安装步骤清单把工作做完了。

最后顺利的把包含html的包裹发了回去。

至于登录以后干什么事儿 , 我就不管了。 

马上就要回到我那昏暗的房间了, 真有点舍不得这里。

不过相对于有些线程, 我还是幸运的, 他们运行完以后就彻底的销毁了,而我还活着 !


回到了小黑屋, 老线程0x6900 问:

”怎么样?第一天有什么感觉?“

”我们的世界规则很复杂 , 首先你不知道什么时候会被挑中执行;  第二 ,在执行的过程中随时可能被打断,让出CPU车间;

  第三,一旦出现硬盘,数据库这样耗时的操作也得让出CPU,去等待;  第四,就是数据来了,你也不一定马上执行,还得等着CPU挑选“

”小伙子理解的不错啊“

”我不明白为什么很多线程都执行完就死了, 为什么咱们还活着?“

”你还不知道, 长生不老是我们的特权, 我们这里有个正式的名称,叫做 线程池!“

(未完待续)

------------------------------------------------------------------------------

“码农翻身” 公共号(coderising) : 由工作15年的前IBM架构师创建,分享编程和职场的经验教训。


回复下面的关键字,查看更多文章

牛人 键盘侠 留学 读书 调试 烂代码 小白 培训

数据结构 代码腐化 无聊 迷茫 刚工作 死锁 简历  

HTTP Session XML AJAX TOMCAT 反射 JUnit

开源 职业发展  假如我是老师  学习Java  外包

自学  OO  我是一个线程

长按二维码, 关注"码农翻身"

0?wx_fmt=jpeg

你可能感兴趣的:(我是一个线程(上))