十步做一死,千里不留行,事了拂衣去,深藏功与名~ 收藏本站
登陆 / 注册 搜索

阅读: 16.8K   回复: 5

[# 系统基础] 一个线程的自白

[复制链接]
仗剑天涯论坛大牛 2016-4-16 10:45 |显示全部楼层

今生相逢便是缘分,何苦去怨恨,何苦去仇视。

主题破百
      线程,有时被称为轻量级进程(Lightweight Process,LWP),是程序执行流的最小单元。一个标准的线程由线程ID,当前指令指针(PC),寄存器集合和堆栈组成。
! J# q! T# H# V, I( [$ R1 k' ~. `3 T0 b5 C" A
一个线程的自白 160cpu.jpg

7 D' X$ z" }! d6 U$ }/ m; p5 Z7 Q, c) p3 q- X$ \
        我是一个线程, 我一出生就被编了个号: 0x4590,  然后被领到一个昏暗的屋子里,  这里我发现了很多和我一模一样的同伴。我身边的同伴0x6900 待的时间比较长, 他带着沧桑的口气对我说:, a! t) k- D$ v3 ~6 q, a! s
( Z6 y1 @2 o. t+ R) g9 r
        “我们线程的宿命就是处理包裹。 把包裹处理完以后还得马上回到这里,否则可能永远回不来了。”$ |! e* ?5 x: p7 s% G0 o

: O2 c0 A5 @: D3 t        我一脸懵懂,包裹,什么包裹?
: s' U0 p9 F8 {6 F" @1 K* f) y1 d, ]- J2 f
        ”不要着急,马上你就会明白了, 我们这里是不养闲人的。“' @- l; B# T. h4 U4 k
# h! m- ], A" s) R' M" y+ ?# F  f
        果然,没多久,屋子的门开了, 一个面貌凶恶的家伙吼道:/ `3 j: D, r5 y1 m$ x$ T  H, {# E
- ~& g; t; M! ~) S( X5 d
        "0x4590 ,出来!"
1 l4 q8 B' F, o% `0 f' N, J% k- T  I; s; m" M9 K
        我一出来就被塞了一个沉甸甸的包裹,上面还有附带着一个写满了操作步骤的纸。
' l, t1 ]3 W9 S! w  V4 _8 A
$ B0 h$ k$ N% S, Q5 ?, q; N        "快去,把这个包裹处理了。"
+ ^7 P5 Y4 t" j, \* @; M* J& G; y% o
" U0 Z/ q& d6 c9 _& w        "去哪儿处理"
. c5 {6 u5 p; @* d4 g& R& Z" {+ m9 \, w
        "跟着指示走, 先到就绪车间"
6 L8 L+ E+ ^7 X% ^  I
0 s- I8 q( C) u- |        果然,地上有指示箭头,跟着它来到了一间明亮的大屋子,这里已经有不少线程了, 大家都很紧张,好像时刻准备着往前冲。5 y- R- v" L2 s0 {" P. g

$ d7 D5 ~' k! d        我刚一进来,就听见广播说:“0x4590, 进入车间”
6 i5 A1 Z* @& l/ b
7 I5 v1 F9 D4 ~& s+ i        我赶紧往前走, 身后很多人议论说:
: F" _- W; b) H/ w( O, N" G4 g" {
        ”他太幸运了, 刚进入就绪状态就能运行“
$ F# j9 A2 |4 Z% i3 A- n' C" n) e
        ”是不是有关系?“' z- L: W; L; K+ s4 H5 i

# h5 Q0 K5 A0 Q9 d1 n# W# Q" `) J        ”不是,你看人家的优先级多高啊, 唉“" c7 P9 R/ q4 @0 g' v

4 ^4 r8 N1 J: b3 H. Q        前边就是车间, 这里简直是太美了, 怪不得老线程总是唠叨着说:要是能一直待在这里就好了。6 N* l. q9 `' g/ Y9 Q* Q4 R# y
. Y: z) N2 f& }) ~8 e
        这里空间大,视野好,空气清新,鸟语花香,还有很多从来没见过的人,像服务员一样等着为我服务。& p4 L/ r- L3 u! C4 l' G3 }
5 t" H' g! Y( N9 C- F' V+ i- a
        他们也都有编号, 更重要的是每个人还有个标签,上面写着:硬盘,数据库,内存,网卡...9 D$ Y) A4 k3 I: P2 P2 j; Q

( b, f! H* e3 j1 ?# C( n1 Y        我现在理解不了,看看操作步骤吧:2 s  p) ?7 y% U$ `2 M  D

: x) F: V) T! ]: y- P1 V        第一步:从包裹中取出参数  
+ B* K" Z& C% Z6 p: n2 [. e
8 e! q$ O  M( F7 O& I! f$ Z        打开包裹, 里边有个Http Request  对象, 可以取到 userName, password两个参数。- a9 u+ E( a8 G, H

: B% t/ B/ g3 n        第二步:执行登录操作
% Z+ m) D5 {9 U# q2 d" F+ G; r- t, U
        奥,原来是有人要登录啊,我把userName/password 交给数据库服务员,他拿着数据, 慢腾腾的走了。
( l! E! [: E* ^# a: M# o* e# x0 L9 a; m3 G+ ?0 @% e
        他怎么这么慢? 不过我是不是正好可以在车间里多待一会儿? 反正也没法执行第三步。
/ c0 z8 |( ?3 d7 q- b9 a+ X6 J7 i! F* v% z  Q* `: q  C) w
        就在这时,车间里的广播响了: 
0 i7 Y! u6 Y" Z/ P8 z! i& p4 `" c" T! q0 p7 [- D8 {- \+ X
        “0x4590,  我是CPU , 记住你正在执行的步骤, 马上带包裹离开”。/ T: M4 ?% V8 O; b

0 l& ?. X$ Q2 A3 Q0 j1 a' t* q" g        我慢腾腾的开始收拾。; l  e2 d, \4 B4 _" ^, g2 q, L

9 c. c5 w. T. q0 ~        ”快点, 别的线程马上就要进来了“3 k; w9 B* C/ y% _. i
8 Q3 L! w! n) \2 n$ w7 g8 U+ ~
        离开这个车间, 又来到一个大屋子,这里很多线程慢腾腾的在喝茶,打牌。* w8 h8 B+ l0 e5 l
: ?0 t" C3 l6 W! k' y
        ”哥们,你们没事干了?“$ m: V2 f- c& j
. @% M8 E8 [  M0 R; B1 \
        ”你新来的把, 你不知道我在等数据库服务员给我数据啊! ,据说他们比我们慢好几十万倍, 在这里好好歇吧“! C3 n" D1 |5 Y
2 t( f/ v1 |  u) `$ N4 z
        ”啊? 这么慢?  我这里有人在登录系统, 能等这么长时间吗”
# Y5 G  `9 E; ~; ?( L- t
+ i$ d6 W( N, z* D: m$ c        ”放心,你没听说过人间一天, CPU一年吗, 我们这里是用纳秒,毫秒计时的, 人间等待一秒,相当于我们好几天呢。“! y/ o9 @4 x: J4 S" \

9 X# X4 t6 y- _1 ]7 O& P7 H  e/ A        干脆睡一会吧 , 不知道过了多久 ,大喇叭又开始广播了:
% S1 s0 k" H* v6 b: z. Y
4 W; a0 A* w! ?! d* f+ F  a        “0x4590, 你的数据来了,快去执行”
5 ^9 h4 v3 K. B! r' q- C
+ a6 `* I$ k, U0 y. o3 O* ]        我转身就往CPU车间跑,发现这里的们只出不进!
. v/ Q4 j- ~4 y6 V5 R1 t: P; X! x' d+ y% O3 Y
        后面传来阵阵哄笑声:! Q. p$ t. U; Z. @6 ?+ e
" j9 r1 e% |- a! \$ Y
        ”果然是新人, 不知道还得去就绪车间等。“
" ~: ^4 K' S8 e5 I) \3 u' b  C4 q/ D+ p  r9 q: w6 ?
        于是赶紧到就绪车间, 这次没有那么好运了, 等了好久才被再次叫进CPU车间。
8 i2 h; }# x6 J7 K: D( B
0 Q+ h2 o( v$ r- x. ?: q        在等待的时候, 我听见有人小声议论:2 R  K: D4 k# V! I% V
( O8 h: z3 `- A5 `# @
        ”听说了吗,最近有个线程被kill掉了“8 B& E% G' X3 p: D4 x4 X2 Z" Q

# I1 ^# F/ C) b! ]        ”为啥啊?“
) R$ ^8 D0 j3 S. A8 F+ U( s& e3 O' Z
        ”这家伙赖在CPU车间不走, 把CPU利用率一直搞成100%,后来就被kill掉了“: @, q5 v' e2 d

- L" A; j0 R5 i        ”Kill掉以后弄哪儿去了“
. u- x" J5 R2 R! Q' o" v4 l* P6 }2 N
        ”可能被垃圾回收了吧“
* H/ C* J2 x# v7 Q. m! f( N2 Y% Z$ @5 A0 i
        我心里打了个寒噤 ,  赶紧接着处理, 收下的动作块多了,第二步登录成功了。
" V! p: p: w4 F+ U7 M; x* X$ [0 I4 m  o/ ?! P  h3 G/ x- U
        第三步:构建登录成功后的主页9 ?  U" y8 Z7 x# c4 ]

$ ~0 }% ]$ i6 n! O. G- r* J1 @        这一步有点费时间, 因为有很多HTML需要处理, 不知道代码谁写的,处理起来很烦人。5 w8 u9 T) b. b$ y  L
1 F2 }$ [+ I- x2 V% p/ J4 ]. w
        我正在紧张的制作html呢, CPU又开始叫了:: n. a; ]  n/ B2 l! k5 L
/ G. F% C5 N6 a$ a5 h8 H$ _
        “0x4590,  我是CPU , 记住你正在执行的步骤, 马上带包裹离开。”
! w3 w9 N0 M, y
# ~# u4 w0 H/ a! e" T1 ~" G        ”为啥啊?“
# |$ ^; w( I: L) I
! |, O0 R, v. N; X4 A  i3 w        ”每个线程只能在CPU上运行一段时间,到了时间就得让别人用了, 你去就绪车间待着, 等着叫你吧。“. G: J3 \$ S2 x9 v$ p( o
) c' Z; G8 ]" l, w
        就这样, 我一直在就绪-运行 这两个状态,不知道轮转了多少次, 终于安装步骤清单把工作做完了。
; X2 q$ v) u  q2 {; [% k/ z6 X
        最后顺利的把包含html的包裹发了回去。
2 ]% }0 S0 E* T+ ^% [) E! m8 |7 G% I/ d
        至于登录以后干什么事儿 , 我就不管了。
, z# z) ~: N& T& |1 G3 m6 z
2 x7 ]) \6 P6 j6 B* c( V        马上就要回到我那昏暗的房间了, 真有点舍不得这里。
. }- J5 B: s/ f& K7 ]7 h2 Z: y+ i. [3 o& }# V
        不过相对于有些线程, 我还是幸运的, 他们运行完以后就彻底的销毁了,而我还活着 !
, n- K% c2 g9 K9 t
#f182:
5 g% ~2 j& R' [& H8 A  o4 Y( e
" v0 E/ @! p% }6 B; C
        回到了小黑屋, 老线程0x6900 问:
7 r- J* ~7 N( L  D" b3 X0 c) g, i  |+ M
        ”怎么样?第一天有什么感觉?“3 s: Y/ e2 J" ]  u1 t, ^& i. d* e

2 e9 t8 L- l+ V4 o' [; b        ”我们的世界规则很复杂 , 首先你不知道什么时候会被挑中执行;  # J' ^$ D! {; q3 z: m
        第二 ,在执行的过程中随时可能被打断,让出CPU车间;
; }; U- t3 {8 ~        第三,一旦出现硬盘,数据库这样耗时的操作也得让出CPU,去等待;  
% v8 L4 ~0 _5 G: a0 Q" T        第四,就是数据来了,你也不一定马上执行,还得等着CPU挑选。“
/ Y: a1 c9 G! _$ M% ~
, J0 q, f5 r8 M) V+ `& c1 d        ”小伙子理解的不错啊“
) @1 j* O6 Z5 q6 ^9 T, v+ t, B7 [! a7 c4 _* P
        ”我不明白为什么很多线程都执行完就死了, 为什么咱们还活着?“3 e' h0 I9 {- s5 m" Y

: x: r7 D: V3 e' o8 L        ”你还不知道, 长生不老是我们的特权, 我们这里有个正式的名称,叫做线程池!“2 V1 f2 L9 Q0 K) t6 T9 V9 [
2 }. U% h1 X0 ]2 S
        平淡的日子就这么一天天过去, 作为一个线程, 我每天的生活都是取包裹,处理包裹,然后回到我们昏暗的家:线程池。
5 K1 U2 B% I8 g& {) I9 M5 E  g6 R& p9 Z( u, F; }
        有一天我回来的时候, 听到有个兄弟说, 今天要好好休息下,明天就是最疯狂的一天。, o2 i& Y. m: {
' R0 U% h# Z, h
        我看了一眼日历,明天是 11月11号 。
! ~( }. V2 z- W0 B+ o4 c# K# o. H3 H! R) R( K
        果然,零点刚过,不知道那些人类怎么了, 疯狂的投递包裹, 为了应付蜂拥而至的海量包裹, 线程池里没有一个人能闲下来,全部出去处理包裹,CPU车间利用率超高,硬盘在嗡嗡转, 网卡疯狂的闪,  即便如此, 还是处理不完,堆积如山。+ {; |/ V" J% r. B# V9 `7 W7 z2 {
2 o; a' D3 H5 v( Q0 ?
        我们也没有办法,实在是太多太多了, 这些包裹中大部分都是浏览页面,下订单,买,买,买。
0 ]# H0 B1 H7 O* O* j
  O$ u6 M1 a/ q        不知道过了多久, 包裹山终于慢慢的消失了。
' Y7 o# L2 D7 f' C6 s
/ b6 s: _# O5 S4 ?1 K. G( ?        终于能够喘口气, 我想我永远都不会忘记这一天。
# C/ `& p3 r6 U/ I5 a' W- V% _# I4 A. T- N( B0 Q3 N
        通过这个事件,我明白了我所处的世界:这是一个电子商务的网站!3 S) c7 u3 T" Z7 r  O7 V% |  t+ O

1 q% x5 }- G! a. {4 N        我每天的工作就是处理用户的登录,浏览, 购物车,下单,付款。
, ]; B+ o. @: q* _$ p2 O" ^! \, y
2 L" S) v  e* |- m7 z        我问线程池的元老0x6900 : ” 我们要工作到什么时候?”
+ t( q2 [" O4 ?
( ^1 ?# ~/ L% g* s& \        ” 要一直等到系统重启的那一刻”, 0x6900 说。
2 a% j$ B6 Q, }9 k
8 y( E5 E' y! G: S        ” 那你经历过系统重启吗?”
2 t4 C" X6 x, u. C) p5 i+ A; g7 q* d2 f6 j
        ” 怎么可能? , 系统重启就是我们的死亡时刻, 也就是世界末日,一旦重启, 整个线程池全部销毁,时间和空间全部消失,一切从头再来。”
, o9 e) u  \/ r9 U; D$ r; k
5 G, ]3 l1 C, p6 V; _        ” 那什么时候会重启?”* m: m  o- E# v, `
" g+ b* g7 Z0 P+ W# R4 t
        ” 这就不好说了,好好享受眼前的生活吧…..”( O% L1 E8 p6 \8 k+ i
2 C1 g8 G# t* s! C) J
        其实生活丰富多彩, 我最喜欢的包裹是上传图片,由于网络慢,所以能在就绪车间, CPU车间待很长很长时间,可以认识很多好玩的线程。
5 x1 g  P$ J9 V$ O2 L$ g8 j5 K  B% p. X7 X8 h9 W
        比如说上次认识了memecached 线程,他给我说通过他缓存了很多的用户数据, 还是分布式的! 很多机器上都有!
6 D4 Z4 e. N8 N& e  Q8 x2 s. G$ Y# D8 O2 D
        我说怪不得后来的登录操作快了那么多, 原来是不再从数据库取数据了你那里就有啊, 哎对了你是分布式的你去过别的机器没有?
& \) U  H' H3 E. P3 Q& X6 f* P7 e0 _* s& n: b
        他说怎么可能我每次也只能通过网络往那个机器发送一个GET, PUT命令才存取数据而已, 别的一概不知。
1 t  u6 G$ L. k3 e
$ X- S% A4 t1 V5 P/ P        再比如说上次在等待的时候遇到了数据库连接的线程, 我才知道它他那里也是一个连接池, 和我们线程池几乎一模一样。) t7 x/ B0 w+ ]$ [
+ u. A& {% b9 S
        他说有些包裹太变态了,竟然查看一年的订单数据, 简直把我累死了。$ O6 q; L$ X- Q# D; T6 g
' z5 O4 _6 d4 H7 U& n, z. f1 o# k
        我说拉倒吧你, 你那是纯数据, 你把数据传给我以后,我还得组装成HTML,  工作量不知道比你大多少倍。* V; _4 q, [" _- C
! c" W* M, [6 H6 O
        他说一定你要和meme cache搞好关系,直接从他那儿拿数据,尽量少直接调用数据库, 我们JDBC connection也能活的轻松点。
% t. L8 Y# g1 A5 e6 F# W. ?: B; x$ F* `' o% K8 }
        我说好啊好啊, 关键是你得提前把数据搞到缓存啊, 要不然我先问一遍缓存, 没有数据, 我这不还得找你吗?! o% Z. R6 R7 U
. H0 a" f: m& V3 D2 c6 |
        生活就是这样, 如果你自己不找点乐子,还有什么意思?( A+ P8 k- i/ ^9 |- }
, d; g, q% Z' _9 E' Y, S5 m% d
        有一天我遇到一个可怕的事情, 差一点死在外边,回不了线程池了……
1 N$ }3 H4 D. `  j, g; ]' F# A" S" I8 U  i0 a+ T( Z
        其实这次遇险我应该能够预想到才对, 太大意了。
/ W! I& `2 E" p3 y* _* a4 Y% Q  z' s
#f182:

1 C  b% |0 O0 `! O$ `5 x- Y( t# s6 }9 P8 C. g9 Z/ D7 H% h
        前几天我处理过一些从http 发来的存款和取款的包裹, 老线程0x6900 特意嘱咐我:
* R6 I# `: @2 @: p7 O! c7 s1 ~' k2 z1 k6 i0 F, @
        “处理这些包裹的时候要特别小心, 你得一定要先获得一把锁, 在对账户存款或者取款的时候一定要把账户给锁住, 要不然别的线程就会在你等待的时候趁虚而入,搞破坏, 我年轻那会儿很毛糙,就捅了篓子”0 H7 X4 |& }% y' i: J5 M. Y9 _
/ }# q4 L, ^- ~5 E# t# o
        为了“恐吓”我, 好心的0x6900还给了我两个表格:
! {6 k& _' o5 i! ~* R* C
7 @! ~: P! m! p9 [) T7 f( H        1、没有加锁的情况9 L" _) o: ~' y6 Q

6 M4 j' i/ `# v& @& ^8 a9 i
一个线程的自白 QQ截图20160416102649.png

* ^: E6 W7 d/ r( n
. G, G4 b* b5 w  S$ t# B% K: b        2、加锁的情况2 Q2 m9 ?, }$ s+ F% L. K6 }# x( o

% q1 S  A! X4 V; f' l
一个线程的自白 QQ截图20160416102704.png

- V0 Q& Z. \% k( X+ h+ ?6 F5 i/ S, k& s" o8 _& ^6 v) v% B' Q
        我看的胆颤心惊, 原来不加锁会带来这么严重的事故。
) w9 E! x! n" x+ j8 O* z3 h: L) S' v! b
        从此以后看到存款,取款的包裹就倍加小心, 还好,没有出过事故。
) n- }* _6 z# h& }2 K
  h$ B* ^  ]& b, d" v+ @+ k. z! v5 N" F        今天我收到的一个包裹是转账, 从某著名演员的账号给某著名导演赚钱, 具体是谁我就不透漏了, 数额可真是不小0 r  f- e6 g2 D7 b  b' I, I0 {

: G& E0 ^) j# y8 G& ?7 C6 m        我按照老线程的吩咐, 肯定要加锁啊, 先对著名演员账号加锁, 在对著名导演账号加锁。
/ @6 ]2 X! n, ]0 s; @
/ |: V5 z/ ~, o  g8 i: Y, e/ J+ |        可我万万没想到的是, 还有一个线程,对,就是0x7954,  竟然同时在从这个导演到往这个演员转账。2 e  C4 D8 A' h* E' E0 e& ]
% r: }6 J: S% U* D$ U7 z) O
        于是乎,就出现了这么个情况:
6 Z" W  L( N/ I4 t" j! }* Y" o/ Z7 e( H: k/ G, f
一个线程的自白 QQ截图20160416102714.png

0 _$ z! Z7 C/ ~' l2 y
, u% Z: h1 E& ~* I+ b3 V        刚开始我还不知道什么情况, 一直坐在等待车间傻等, 可是等的时间太长了, 长达几十秒 ! 我可从来没有经历过这样的事件。9 X2 R- j$ s, F
1 ^( F/ @3 T; H
        这时候我就看到了线程0x7954 , 他悠闲的坐在那里喝咖啡, 我和他聊了起来:
; G' t0 u+ R/ v/ c2 P2 W/ b
! X1 s+ I& {0 E8 D, c        “哥们, 我看你已经喝了8杯咖啡了, 怎么还不去干活?”
" y' ?) }' L8 m- ]7 R) u! q
( K1 i  T5 c6 _3 M        “你不喝了9杯茶了吗?” 0x7954 回敬到。. ]0 @4 B5 f2 _/ k1 C$ k0 `4 l7 H. d

5 t+ Y$ c! c4 l        “我在等一个锁, 不知道哪个孙子一直不释放”1 y# W8 n' Q5 j/ }( d0 ~5 C

9 p, b. q/ i  M4 W$ S- N1 f" M        “我也在等锁啊,我要是知道哪个孙子不释放锁我非揍死他不可 ” 0x7954 毫不示弱。
& G! k. N# G1 a8 H
, g6 Y' e" r1 [9 ^  ]2 Z. I% _        我偷偷的看了一眼, 这家伙怀里不就抱着我正在等的某导演的锁嘛?很明显, 0x7954 也发现了我正抱着他正在等待的锁。
! D% i" ?9 {/ A3 M% \3 g3 \$ M1 P2 `
        很快我们两个就吵了起来, 互不相让:
, }% G7 E3 E6 G1 A" q/ S8 }" A
0 _* m3 v6 o# Z. N: a. [* ]+ @# s        “把你的锁先给我, 让我先做完”; o( f7 Z* O: y2 ?2 Q

" ?9 M0 f' o" v. h        “不行, 从来都是做完工作才释放锁, 现在绝对不能给你”
7 {% J, b8 l. N+ i. Y; g
+ N9 _7 l3 r( W) h: `, G1 v" }        从争吵到打起来, 就那么几秒钟的事儿。
$ ]& s* \; o+ l+ k7 t$ B9 p( j# w/ ~$ W" S* E  @* n$ S: {; Q8 u
        更重要的是, 我们俩不仅仅持有这个著名导演和演员的锁, 还有很多其他的锁, 导致等待的线程越来越多, 围观的人们把屋子都挤满了。$ d. u+ h$ b" m" [) Q$ j0 r( y
; _( A' a  j; x( o- x
        最后事情真的闹大了, 我从来没见过终极大boss “操作系统” 也来了。大Boss毕竟是见多识广, 他看了一眼, 哼了一声 , 很不屑的说:
) o/ w; y( |, N& L- S6 L* l6 ]
* P6 _: e" n; n6 e' l* v        “又出现死锁了”
5 ]! n4 u# _0 z: _
9 v" t, B& ]& Y& F        “你们俩要Kill掉一个, 来吧, 过来抽签。 ”. b) r/ k  d8 Z3 h# A- {6 |  i5 u

4 o* A$ q" l4 Y% v5 w        这一下子把我给吓尿了, 这么严重啊!) V# {/ O% u) x0 T, F& P
' O$ w$ P8 m- \  `. ~
        我战战兢兢的抽了签,打开一看, 是个”活”字。
$ J- P& b9 y; n4 J" M0 K! O/ l4 \' o* _! o! U/ H5 j
        唉,小命终于保住了。
& v- V2 g7 s6 S8 I0 T+ B7 t) x% B, T. P7 \, s( q
        可怜的0x7954 被迫交出了所有的资源以后, 很不幸的被kill掉, 消失了。我拿到了导演的锁, 可以开始干活了。
; Z; q( Z' v6 ?% \
) b( {) H+ u; ^7 ?" V        大Boss操作系统如一阵风似的消失了, 身后只传来他的声音:
0 C: O7 J" S# S# r
! s# g* ?8 u+ z: [        “记住, 我们这里导演>演员,  无论认识情况都要先获得导演的锁。”
6 O# |' x. R# I" a1 \3 u: K! u* Y6 l* Y  y8 B( P
        由于不仅仅是只有导演和演员, 还有很多其他人, Boss留下了一个表格,  里边是个算法, 用来计算资源的大小, 计算出来以后,永远按照从大到小的方式来获得锁:
* x1 b+ j, t4 {& u  E# S- O
/ Z" U' _0 k+ n3 [; m- S1 R. P
一个线程的自白 QQ截图20160416102726.png
$ s* t$ r2 ^0 K  V

( P; j* q  K1 W! _1 O( O$ g
  V) F% [; [& z3 ^+ T5 q, Q2 B        我回到线程池, 大家都知道了我的历险, 围着我问个不停。
" p# J! c9 L5 `' `
3 _; J8 ]) M+ l1 \9 \( S        凶神恶煞的线程调度员把大Boss的算法贴到了墙上。#j339:
  f1 g0 z+ P; N2 l' I% N6 p
2 w0 s& X2 O2 Y  d- M/ N. \" P        每天早上, 我们都得像无节操的房屋中介, 美容美发店的服务员一样, 站在门口,像被耍猴一样大声背诵:: K$ o( y2 D' b6 Y7 A8 t  J

- B4 ~+ ?, ]% J8 a8 n        “多个资源加锁要牢记, 一定要按Boss的算法比大小, 然后从最大的开始加锁”........." A1 X: z- |7 J+ Y* I) {

# G  O" d8 r% x9 L( z- P- G        又过了很多天, 我和其他线程们发现了一个奇怪的事情:包裹的处理越来越简单。不管任何包裹,不管是登录, 浏览,存钱….. 处理的步骤都是一样的, 返回一个固定的html页面。- P7 V: r7 j$ b0 u1 b
) y+ b0 Z, W9 {3 [) T
        有一次我偷偷的看了一眼, 上面写着:
2 B0 Q2 ~* n% J! D; l/ M6 B* l/ O3 W- y
        “本系统将于今晚 00:00 至4:00 进行维护升级, 给你带来的不便我们深感抱歉。”# D; d1 J% J, E6 @. k# U* Y

$ |+ A/ y* J- H, k. Z" J        我去告诉了老线程0x6904,  他叹了一口气说:
. S# I# ]7 r  }5 f( I" w3 Y% d
1 i; U& ^+ E. v6 y( M1 X3 C8 g        “唉, 我们的生命也到头了, 看来马上就要重启系统, 我们就要消失了, 再见吧兄弟。”{:4_86:}  P$ O) K3 L& z) ]4 G" ?
$ A% k8 h# S8 d1 a) M$ m' n) m* o2 K
        系统重启的那一刻终于到来了。我看到屋子里的东西一个个的不见了, 等待车间,就绪车间,甚至CPU车间都慢慢的消失了。我身边的线程兄弟也越来越少, 最后只剩我自己了。
6 U1 Z) i6 g# _# P* S- D
, t8 W' j. k$ O        我在空旷的原野上大喊: 还有人吗?( K* L  A/ Y( x2 l
& t3 p! Y/ Y3 _" [
        无人应答。! T! U/ w5 c. u4 t* `, f, \0 r8 K
4 z" I8 u. M+ s: b
        我们这一代线程池完成了使命,下一代线程池将很快重生。
! f4 c5 |1 ~/ z: o; z' f& `8 I2 ?/ P
上一篇
下一篇
帖子热度 3.9万 ℃

soarcloud 「龙战于野」 2016-4-18 09:26 |显示全部楼层

这个用户很懒,还没有填写自我介绍呢~

很有意思的描述
噬影无痕 「锋芒初露」 2016-4-21 00:18 |显示全部楼层

这个用户很懒,还没有填写自我介绍呢~

能力有限,一知半解,还待深入了解!#j343:这是第二遍观看#j318:
噬影无痕在网吧通宵,花了 1 个 金币.
也生 「初入古黑」 2016-6-7 15:21 |显示全部楼层

这个用户很懒,还没有填写自我介绍呢~

虽然看不太懂,但是觉得你很生动
糟糕!也生长得太帅路遇劫匪,赎金 2 个 金币.
微雨黄昏 「出类拔萃」 2018-5-5 09:32 |显示全部楼层

这个用户很懒,还没有填写自我介绍呢~

专业抢沙发的!哈哈
映画 「出类拔萃」 2018-5-5 12:02 来自手机 |显示全部楼层

这个用户很懒,还没有填写自我介绍呢~

珍爱生命,果断回帖。
您需要登录后才可以回帖 登录 | 免费注册  

本版积分规则

快速回复 返回列表