一、为什么会有并发?

提高效率;提高执行速度。

1、多处理器上的并行计算

在单核CPU机器上,并发流是交替执行的,在任何时刻只有一个流在CPU上执行。对于多核CPU的机器,可以同时执行多个流。被分成并发流的并行应用,能够运行得更快。

2、访问慢速的I/O设备

当一个应用在等待来自慢速I/O设备(如:磁盘)的数据到达时,内核会运行其他进程,使得CPU保持繁忙。交替执行I/O请求和其他任务。

3、与人交互

和人交互的过程中要求计算机有能够同时执行多个任务的能力。如:在打印文档时,去浏览新闻网页;移动鼠标。

4、服务多个网络的客户端

服务器能够每秒能够为成百上千的客户提供服务,为每个客户端请求创建各自独立的逻辑流,能够同时为多个用户服务,避免慢速的客户独占服务器。

二、并发代码共享哪些东西?

只考虑多线程
a、同一进程的所有线程都能够很容易地访问进程中的对象,能够引用这些对象的线程也能修改这些对象
b、线程调度程序在任何时候都应该能够在CPU调入或调出线程

三、线程的调度是如何实现的?

线程调度是JVM 还是CPU实现?

参考

1、https://www.cnblogs.com/neon/p/10918447.html
2、CPU从磁盘读取数据过程
image.png