吃透Java并发一:并发基础概念

一、并发与并行

并发:对于单CPU的计算机来说,在CPU中,同一时间只能干一件事儿的。为了看起来像是“同时干多件事”,分时操作系统把CPU的时间划分成长短基本相同的”时间片”,通过操作系统的管理,把这些时间片依次轮流地分配给各个用户使用。由于计算机的处理速度很快,只要时间片的间隔取得适当,那么一个用户作业从用完分配给它的一个时间片到获得下一个CPU时间片,中间有所”停顿”,但用户察觉不出来,好像整个系统全由它”独占”似的。
所以,在单CPU的计算机中,我们看起来“同时干多件事”,其实是通过CPU时间片技术,并发完成的。

说到并发还有一个概念容易引起混淆“并行”

什么是并行?
并行(Parallel),当系统有一个以上CPU时,当一个CPU执行一个进程时,另一个CPU可以执行另一个进程,两个进程互不抢占CPU资源,可以同时进行,这种方式我们称之为并行(Parallel)。

并发是两个队伍交替使用一台饮水机。并行是两个队伍同时使用两台饮水机。

二、进程与线程

进程:程序运行资源分配的最小单位,进程内部有多个线程,会共享这个进程的资源。

线程:CPU调度的最小单位,必须依赖进程而存在。

对Java语言来说,Java程序是运行在JVM上面的,每一个JVM其实就是一个进程。所有的资源分配都是基于JVM进程来的。而在这个JVM进程中,又可以创建出很多线程,多个线程之间共享JVM资源,并且多个线程可以并发执行。

三、Java线程调度策略

线程调度器

在Java多线程环境中,为保证所有线程的执行能按照一定的规则执行,JVM需要实现一个线程调度器。这个调度器定义了线程调度的策略,同时对CPU运算的分配都进行了约定,通过特定的机制为多个线程分配CPU的使用权。

线程调度器里面包含了多种调度策略算法,由这些算法来决定CPU的任务执行。此外,每个线程还有自己

猜你喜欢

转载自blog.csdn.net/u013277209/article/details/103036959