java并发编程(一)----初识

一、什么是并发

    先看“科普中国”给出的官方解释。并发在操作系统中,是指一个时间段中有几个程序都处于已启动运行到运行完毕之间,且这几个程序都是在同一个处理机上运行,但任一个时刻点上只有一个程序在处理机上运行。 

    通俗来讲,并发就是指同一时间间隔内发生两个或多个事件。 且并发是在同一实体上的多个事件。

    并发编程可以提高计算机系统的效率和性能。那么操作系统是如何实现这种并发的呢?

    现在我们的操作系统无论是Windows、Linux还是MacOS其实都是多用户多任务分时操作系统,用户可以同时干多件事情。

    但对于单核CPU来说,同一时间只能干一件事情。为了看起来像同时干多件事,分时操作系统把CPU的时间划分为长短基本相同的时间区间,也就是我们说的时间片,通过操作系统的管理,把这些时间片一次轮流的分配给各个用户使用。

    如果一个作业在时间片结束之前还没有完成,那么改作业就被暂停下来,放弃CPU,等待下一轮循环再继续做,这时的CPU则被分配给另一个作业去使用。

    由于计算机的处理速度很快,只要时间片的间隔取得适当,那么一个用户作业从用完分配给他的时间,到下一次轮转获得的时间,中间的间隔会让用户察觉不出来,好像整个系统由他独占似的。所以在单核CPU中,我们看起来同时干了多见事,其实是通过CPU时间轮转并发完成的。

二、什么是并行

    先看“科普中国”给出的官方解释。并行在操作系统中是指,一组程序按独立异步的速度执行,无论从微观还是宏观,程序都是一起执行的。

    通俗来讲,并行是指同一时刻内发生两个或多个事件。 并行是在不同实体上的多个事件 。当系统有一个以上CPU时,当一个CPU执行一个进程时,另一个CPU可以执行另一个进程,两个进程互不抢占CPU资源,可以同时进行。

三、并行与并发的区别

1、从时间上来说:并发是指在同一个时间段内,两个或多个程序执行,有时间上的重叠(宏观上是同时,微观上仍是顺序执行);而并行,无论宏观还是微观,程序都是一起执行的。

2、从资源分配来说,并发是多个任务指定多个线程,同时竞争同一个资源,有强烈的竞争;而并行没有强烈竞争,各自执行各自的。

3、从任务处理来说,并发是一个CPU处理器同时处理多个线程任务;并行是多个CPU处理器同时处理多个线程任务。

四、线程和进程的区别

    操作系统中的进程和线程是并发编程的基本单位。

    进程是程序的执行实例,每个进程都拥有自己的内存空间和系统资源。

    线程是进程的子集,它共享进程的系统资源,并在进程内部执行代码。通过使用多个线程,可以在同一时间内执行多个任务。

你可能感兴趣的:(java)