并发原理---Java基础篇

*我是一个从汽车行业转行IT的项目经理,我是Edward。在聊今天的话题之前,说一点题外话。今天的新闻:全球汽车业暗夜停摆:销量跌回7年前,市值缩水3000亿,裁员10万+。正如海马景柱预言的,汽车行业的黑夜远远没有结束,至少还有10年。回顾2008年世界金融危机时,通用破产,福特苟延残喘。如今,10年后,危机终于正式来到了中国。我心情有点复杂,不知道该高兴还是悲伤。但是我清楚一点,技术才是基石,当一个行业的技术已经不受重视,外行管理内行的现象愈发显著时(大概只有汽车行业才会出现大批外语专业的人从事项目管理的奇观吧),这个行业已经完了。

问题1:如果让Server同时accept不同的Socket并与不同的Socket进行交互?

答:引入并联。
并发原理---Java基础篇_第1张图片

问题2:这样的并联是真正的并联吗?

答:不是,并发是微观上的(纳秒级别的)走走停停,宏观上都在运行,并不是绝对意义上的“同时运行”。
操作系统将时间划分为很多时间片段(时间片),尽可能均匀分配给每一个线程,得到时间片的线程被CPU运行,而其他线程全部等待,CPU在用高性能模拟“同时”。

问题3:计算机有多快呢?

答:CPU的运行速度是纳秒级的。而人的反应速度是0.1秒级的。
如下科普:

皮秒

皮秒,符号ps(英语:picosecond ).
1皮秒等于一万亿分之一秒(10-12秒)

1,000 皮秒 = 1纳秒

1,000,000 皮秒 = 1微秒

1,000,000,000 皮秒 = 1毫秒

1,000,000,000,000 皮秒 = 1秒

纳秒

纳秒,符号ns(英语:nanosecond ).
1纳秒等于十亿分之一秒(10-9秒)

1 纳秒 = 1000皮秒

1,000 纳秒 = 1微秒

1,000,000 纳秒 = 1毫秒

1,000,000,000 纳秒 = 1秒

微秒

微秒,符号μs(英语:microsecond ).
1微秒等于一百万分之一秒(10-6秒)

0.000 001 微秒 = 1皮秒

0.001 微秒 = 1纳秒

1,000 微秒 = 1毫秒

1,000,000 微秒 = 1秒

毫秒

毫秒,符号ms(英语:millisecond ).
1毫秒等于一千分之一秒(10-3秒)

0.000 000 001 毫秒 = 1皮秒

0.000 001 毫秒 = 1纳秒

0.001 毫秒 = 1微秒

1000 毫秒 = 1秒

差距在一亿个量级。

问题4:为什么多线程更快?

答:因为随着科技的发展,CPU已经从传统的586经历new boy时期的奔腾,进化到了如今的多核酷睿了,正如Intel创始人戈登·摩尔(Gordon Moore)提出来的摩尔定律(当价格不变时,集成电路上可容纳的元器件的数目,约每隔18-24个月便会增加一倍,性能也将提升一倍。换言之,每一美元所能买到的电脑性能,将每隔18-24个月翻一倍以上。这一定律揭示了信息技术进步的速度。尽管这种趋势已经持续了超过半个世纪,摩尔定律仍应该被认为是观测或推测,而不是一个物理或自然法则)。不同于单个CPU工作时的,背着抱着一样重,当多个CPU同时工作的时候,多线程显然要快于单线程。

并发原理---Java基础篇_第2张图片

你可能感兴趣的:(并发编程)