1.进程(Process):是程序的一次执行过程,是系统进程调度和资源分配的一个独立单位。 简单地说,就是一个正在执行的程序,一个程序被加载到内存,系统就创建了一个进程, 程序执行结束后,该进程也就消亡了。 运行中程序,进程特征: a.独立性,独有自己的资源,独有自己的内存区。 通常来说,一个进程的内存空间,是不允许其他进程访问的。 像window,A进程可以通过某种方式修改其他进程的内存直--外捷
b. 动态性,程序是静止,运行起来才叫进程。。 c. 并发性,一个操作系统可以同时“并发()”运行多个进程
2.线程(Threads) 一般意义上,如果一个程序只有一个进程就可以处理所有任务,那么它就是单线程的。
线程-是进程中的“并发”执行流。 轻量级线程
如是一个程序可以被分解为多个进程共同完成程序的任务,那么被分解的不同进程就叫做线程。
目前 在UNIX中,进程仍然是CPU的分配单位,而在window中,线程是CPU的分配单位 把线程作为CPU的单位分配单位的好处是:充分共享资源,减少内存开销,提高并发 性,加快切换速度,目前大部分应用程序都是多线程的结构。
进程与线程的经典区别:进程是有独立内存空间的,因此创建进程的成本比 创建线程的成本高。
什么是并发,什么是并行(parallelism)
并发,即使只有一个CPU,多个进程,或多个线程在CPU上【快速轮换】的执行。 在一个时刻,只有与CPU个数相同的进程真正的在执行。 其他进程都处于等待状态, ----对于用户来说,感觉是多个进程在同时执行。 并行,必须有一个以上CPU,这样就可以保证在同一时刻, 至少有与CPU个数相同的进程真正在执行, 这些正在执行的进程就是在并行。 并行,是多个进程【真正在多个CPU】上同时执行。
多线程的好处: 1.功能上类似多进程 2.创建成本低,效率高。 3.所有线程共享进程的内存,因此线程之间通信非常方便 4.java语言的多线程非常优秀