java线程和进程的区别
⑴ java 进程和线程的区别与联系
1. 一个 线程只能属于一个进程,一个进程可以有多个线程,但至少有一个线程。
2. 资源分配给进程,同一进程的所有线程共享进程中的所有资源。
3. 处理机分配给线程, 真正在处理机上运行的是线程。
4. 线程在执行中需要同步协作,不同的进程的线程间要利用消息通信的办法实现同步。
Java线程教程:
⑵ java中进程和线程有什么不同
不是java中的区别,进程和线程是系统里的两个很基本的概念,举个很常见的例子,你运行了qq程序就一个进程,如果你开几个窗口聊天,这几个窗口就是qq进程下的几个线程,一个进程可以有多个线程,可以说线程是进程的子!!
⑶ Java基本概念之线程和进程有什么区别
1.定义
进程:具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位.
线程:进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源.
2.关系
一个线程可以创建和撤销另一个线程;同一个进程中的多个线程之间可以并发执行.
相对进程而言,线程是一个更加接近于执行体的概念,它可以与同进程中的其他线程共享数据,但拥有自己的栈空间,拥有独立的执行序列。
3.区别
进程和线程的主要差别在于它们是不同的操作系统资源管理方式。进程有独立的地址空间,一个进程崩溃后,在保护模式下不会对其它进程产生影响,而线程只是一个进程中的不同执行路径。线程有自己的堆栈和局部变量,但线程之间没有单独的地址空间,一个线程死掉就等于整个进程死掉,所以多进程的程序要比多线程的程序健壮,但在进程切换时,耗费资源较大,效率要差一些。但对于一些要求同时进行并且又要共享某些变量的并发操作,只能用线程,不能用进程。
1) 简而言之,一个程序至少有一个进程,一个进程至少有一个线程.
2) 线程的划分尺度小于进程,使得多线程程序的并发性高。
3) 另外,进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率。
4) 线程在执行过程中与进程还是有区别的。每个独立的线程有一个程序运行的入口、顺序执行序列和程序的出口。但是线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。
5) 从逻辑角度来看,多线程的意义在于一个应用程序中,有多个执行部分可以同时执行。但操作系统并没有将多个线程看做多个独立的应用,来实现进程的调度和管理以及资源分配。这就是进程和线程的重要区别。
4.优缺点
线程和进程在使用上各有优缺点:
线程执行开销小,但不利于资源的管理和保护;
而进程正相反。
同时,线程适合于在SMP机器上运行,而进程则可以跨机器迁移。
⑷ java 中线程是什么东东
线程是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点在运行中必不可少的资源,但它可与同属一个进程的其它线程共享进程所拥有的全部资源。一个线程可以创建和撤消另一个线程,同一进程中的多个线程之间可以并发执行。由于线程之间的相互制约,致使线程在运行中呈现出间断性。线程也有就绪、阻塞和运行三种基本状态。
线程是程序中一个单一的顺序控制流程.在单个程序中同时运行多个线程完成不同的工作,称为多线程.
线程和进程的区别在于,子进程和父进程有不同的代码和数据空间,而多个线程则共享数据空间,每个线程有自己的执行堆栈和程序计数器为其执行上下文.多线程主要是为了节约CPU时间,发挥利用,根据具体情况而定. 线程的运行中需要使用计算机的内存资源和CPU
⑸ java进程和线程的区别
进程是对操作系统来说的,跟开发语言无关
一个进程指的是一个运行在操作系统中的程序(如一个exe文件)
线程是在一个程序里的一项工作,可以并行,可以挂起(和激活),由编程工具来调配
总的来说,是两个层次的工作
⑹ 在Java中,进程与线程的区别是什么
进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位.
线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源.
一个线程可以创建和撤销另一个线程;同一个进程中的多个线程之间可以并发执行.
⑺ 在Java中,进程和线程的却别,最好能实例说明
线程是一个程序里面不同的执行路径。
进程是静态的,机器上的一个class文件,机器上的一个exe文件。
在一个时间点上,一个cpu只有一个进程在执行。
publicclassTest{
publicstaticvoidmain(String[]args){
Aa=newA();
a.m1();
}
}
classA{
voidm1(){
System.out.println("1");
m2();
m3();
}
voidm2(){
System.out.println("2");
}
voidm3(){
System.out.println("3");
}
}
main()方法就是一个主线程,其他分支都是一个线程。