作者:empty 页数:85 出版社:empty |
进程:进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动,它是操作系统动态执行的基本单元,在传统的操作系统中,进程既是基本的分配单元,也是基本的执行单元,线程:通常在一个进程中可以包含若干个线程,当然一个进程中至少有一个线程,不然没有存在的意义,线程可以利用进程所有拥有的资源,在引入线程的操作系统中,通常都是把进程作为分配资源的基本单位,而把线程作为独立运行和独立调度的基本单位,由于线程比进程小,基本上不拥有系统资源,故对它的调度所付出的开销就会小得多,能更高效的提高系统多个程序间并发执行的程度.瓶坏*t
进程:就是操作系统中运行的一个程序, QQ.exe, music.exe, word.exe, 这就是多个进程线程:每个进程中都存在一个或者多个线程, 比如用word写文章时, 就会有一个线程默默帮你定时自动学习一些枯燥的概念的时候,一定要与生活中的例子结合起来,这样记忆才是最方便的,做并发编程之前,必须首先理解什么是并发,什么是并行.并发和井行是两个非常容易混淆的概念。它们都可以表示两个或多个任务一起执行,但是偏重点有点不同。并发偏重于多个任务交替执行,而多个任务之间有可能还是串行的。并发是逻辑上的同时发生(simultaneous) , 而井行是物理上的同时发生。然而井行的偏重点在于“同时执行'.严格意义上来说,并行的多个任务是真实的同时执行,而对于并发来说,这个过程只是交替的,一会运行任务一,一会儿又运行任务二,系统会不停地在两者间切换。但对于外部观察者来说,即使多个任务是串行并发的,也会造成是多个任务并行执行的错觉,实际上, 如果系统内只有一个CPU, 而现在而使用多线程或者多线程任务, 那么真实环境中这些任务不可能真实并行的, 毕竟一个CPU一次只能执行一条指令, 这种情况下多线程或者多线程任务就是并发的, 而不是并行, 操作系统会不停的切换任务, 真正的井发也只能够出现在拥有多个CPU的系统中(多井发的动机:在计算能力恒定的情况下处理更多的任务,就像我们的大脑,计算能力相对恒定,要在一天中处理更多的问题,我们就必须具备多任务的能力.现实工作中有很多事情可能会中断你的当前任务,处理这种多任务的能力就是你的井发能力,并行的动机:用更多的CPU核心更快的完成任务.就像一个团队, 一个脑袋不够用了, 一个团队来一起处理你吃饭吃到一半,电话来了,你一直到吃完了以后才去接,这就说明你不支持并发也不支持并行,你吃饭吃到一半,电话来了,你停了下来接了电话,接完后继续吃饭,这说明你支持并发.(不一定是你吃饭吃到一半,电话来了,你一边打电话一边吃饭,这说明你支持并行。所以并发编程的目标是充分的利用处理器的每一个核,以达到最高的处理性能,Java的线程有6种状态:可以分析源码: