也许我们会觉得在Java中线程和进程明显是两个不同的概念,真的会有人混淆吗?事实上,对于很多的Java零基础的小伙伴来说,线程和进程就像刚接触英语单词skating和skiing,一个是滑雪一个是滑冰,但这是翻译之后的理解,所以,我们下面的内容就是要起到这个作用,让我们轻松辨别线程和进程。
想要搞明白java进程与线程的区别,必须先要知道java进程与线程的各自基本概念。
1、进程就是系统中正在运行的一个程序,程序一旦运行,那就是进程了。进程可以看成程序执行的一个实例。进程是系统资源分配的独立实体,每个进程都拥有独立的地址空间。一个进程无法访问另一个进程的变量和数据结构,如果想让一个进程访问另一个进程的资源,需要使用进程间通信,比如管道,文件,套接字等。
2、线程是进程的一个实体,是进程的一条执行路径。线程是CPU独立运行和独立调度的基本单位,也是资源分配的基本单位。线程是进程的一个特定执行路径。当一个线程修改了进程的资源,它的兄弟线程可以立即看到这种变化。
进程和线程的主要差别在于它们是不同的操作系统资源管理方式。进程有独立的地址空间,一个进程崩溃后,在保护模式下不会对其它进程产生影响,而线程只是一个进程中的不同执行路径。线程有自己的堆栈和局部变量,但线程之间没有单独的地址空间,一个线程死掉就等于整个进程死掉,所以多进程的程序要比多线程的程序健壮,但在进程切换时,耗费资源较大,效率要差一些。但对于一些要求同时进行并且又要共享某些变量的并发操作,只能用线程,不能用进程。
1) 简而言之,一个程序至少有一个进程,一个进程至少有一个线程。
2) 线程的划分尺度小于进程,使得多线程程序的并发性高。
3) 另外,进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率。
4) 线程在执行过程中与进程还是有区别的。每个独立的线程有一个程序运行的入口、顺序执行序列和程序的出口。但是线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。
5) 从逻辑角度来看,多线程的意义在于一个应用程序中,有多个执行部分可以同时执行。但操作系统并没有将多个线程看做多个独立的应用,来实现进程的调度和管理以及资源分配。这就是进程和线程的重要区别。
希望上面对java进程和线程的概念解读以及对两者之间的区别介绍可以使大家分的清进程与线程,对java进程与线程有更深刻的理解。当然,最实用的方法其实还是多多了解它们,通过动手实践去真正意义上理解它们,在动力节点在线的视频课程中寻找答案吧。
提枪策马乘胜追击04-21 20:01
代码小兵92504-17 16:07
代码小兵98804-25 13:57
杨晶珍05-11 14:54