我对java多进程多线程的浅显理解

linux内核调度算法--CPU时间片如何分配:

  http://blog.csdn.net/russell_tao/article/details/7103012(转载)  ,通过该文章我们知道了进程是有优先级的

windows的任务调度机制:

  http://www.cnblogs.com/wonderKK/archive/2012/06/10/2543978.html(转载),该文章讲Windows的任务调度主要以线程为单位进行  

我们用java开发的软件一般都是部署在linux操作系统上,因此主要按linux的内核调度方式来理解。也就是说每个进程都有自己的优先级,而和其中的线程的优先级和数量无关

进程:就是正在运行的程序的实例,是资源分配的基本单位。(通过任务管理器可以查看进程,一个程序可以启动多个进程,比如你可以用qq程序登陆多个qq账号,所以我理解为是程序的实例)

多进程:就是多个程序实例同时运行(同时不够严谨,可能还与电脑核数有关)

线程:运行在进程当中的运行单元,线程与资源分配无关,它属于某一个进程,并与进程内的其他线程一起共享进程的资源。

多线程:进程中存在多个相互独立或相互有协作关系的运行单元就是多线程(比如音乐播放器,一边下载音乐,一边播放音乐)

进程和线程的区别:

1)地址空间和其它资源(如打开文件):进程间相互独立,同一进程的各线程间共享。某进程内的线程在其它进程不可见。
2)通信:进程间通信IPC,线程间可以直接读写进程数据段(如全局变量)来进行通信——需要进程同步和互斥手段的辅助,以保证数据的一致性。
 
上面的内容算是一个总体上的初步认识线程,下面再深入一些认识java中的多线程
服务器中的线程模型  https://segmentfault.com/q/1010000002998038 
java中一些用到多线程的场景  http://blog.csdn.net/u012661010/article/details/76696309
 
(参考 百度百科,《java多线程编程深入理解》)
原文地址:https://www.cnblogs.com/coffee9527/p/7941127.html