离线下载
PDF版 ePub版

极客学院团队出品 · 更新于 2018-11-28 11:00:43

Java 并发性和多线程

提及多线程,我们就会想到进程、线程、中央处理器(CPU)。那么什么是进程呢?进程是程序执行的最小单位、线程是程序的执行流,CPU 则是处理执行流的中转站和翻译器。

那么并发呢?当有多个线程在操作时,如果系统只有一个 CPU,则它根本不可能真正同时进行一个以上的线程,它只能把 CPU 运行时间划分成若干个时间段,再将时间 段分配给各个线程执行,在一个时间段的线程代码运行时,其它线程处于挂起状。这种方式我们称之为并发(Concurrent)。

一个比较简洁的例子:如果进程是火车的车厢、那么火车就是线程,我们的火车站调度站就是 CPU。很久以前,我们只能让一辆火车进站出站后,下一辆火车才能进站,这样的效率很差,大部分时间都是火车排长队的等待,我们的调度资源处于极大的浪费;后来人们改进了方案,增加了很多条轨道,可以让多辆火车同时进站和出站,这样调度资源得到高效利用;没开心几天,问题发生了,突然有一天,发生了一场灾难,因为没有有效的管理,两量同时进站相向的火车并轨相撞了,为了避免这类并行问题的发生,人们加入优先级调度,让客车优先于货运车,加入快车、慢车,安排好时间管理,这样从根本上杜绝火车进站并轨的问题。

可能上面的描述还不能让你有个更好的理解,那么来这里

课程入口

推荐学习过操作系统的人直接观看 《Java 并发编程》