精华内容
下载资源
问答
  • JAVA线程进程区别

    2014-08-07 13:51:29
    JAVA线程进程区别JAVA线程进程区别
  • Java线程进程区别

    万次阅读 多人点赞 2018-08-06 21:07:56
    什么是进程,什么是线程进程:是并发执行的程序在执行过程中分配和管理资源的基本单位,是一个动态...进程线程区别 1、地址空间:同一进程线程共享本进程的地址空间,而进程之间则是独立的地址空间。 2、...

    什么是进程,什么是线程?

    进程:是并发执行的程序在执行过程中分配和管理资源的基本单位,是一个动态概念,竞争计算机系统资源的基本单位。

    线程:是进程的一个执行单元,是进程内科调度实体。比进程更小的独立运行的基本单位。线程也被称为轻量级进程。

    一个程序至少一个进程,一个进程至少一个线程。

    进程线程的区别

    1、地址空间:同一进程的线程共享本进程的地址空间,而进程之间则是独立的地址空间。

    2、资源拥有:同一进程内的线程共享本进程的资源,但是进程之间的资源是独立的。

    3、一个进程崩溃后,在保护模式下不会对其他进程产生影响,但是一个线程崩溃整个进程都死掉。所以多进程要比多线程健壮。

    4、进程切换时,消耗的资源大,效率高。所以涉及到频繁的切换时,使用线程要好于进程。同样如果要求同时进行并且又要共享某些变量的并发操作,只能用线程不能用进程。

    5、执行过程:每个独立的进程程有一个程序运行的入口、顺序执行序列和程序入口。但是线程不能独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。

    6、线程是处理器调度的基本单位,但是进程不是。

    7、两者均可并发执行。

    优缺点:

    线程执行开销小,但是不利于资源的管理和保护。线程适合在SMP机器(双CPU系统)上运行。

    进程执行开销大,但是能够很好的进行资源管理和保护。进程可以跨机器前移。

    什么地方会用到多线程?

    1、后台线程:比如定期执行一些特殊任务,如定期更新配置文件,任务调度,一些监控用于定期信息采集等。

    2、最典型的应用比如tomcat,tomcat内部采用的就是多线程,上百个客户端访问同一个web应用,tomcat接入后都是把后续的处理扔给一个新的线程来处理,这个新的线程最后调用到我们的servlet程序,比如doGet或者doPost方法。还有就是需要异步处理的时候,需要使用多线程。

    3、特别耗时的操作,如备份数据库,可以开个线程执行备份,然后执行返回,前台不断向后台询问线程执行状态。

    多线程有几种实现方法?有什么区别?

    实现多线程有两种方式:(自JDK1.5之后有三种,最后一种并不常用)

       1.继承Thread类

       2.实现Runnable接口(Callable接口)

    一个类如果实现了Runnable接口或者继承了Thread类,那么它就是一个多线程类,如果是要实现多线程,还需要重写run()方法,所以run() 方法是多线程的入口。

    多线程的两种实现方式的区别:

       1.Thread是Runnable接口的子类,实现Runnable接口的方式解决了Java单继承的局限

       2.Runnable接口实现多线程比继承Thread类更加能描述数据共享的概念

    多线程有几种实现同步方法?

    同步的实现方面有两种,分别是synchronized,wait与notify

    wait():使一个线程处于等待状态,并且释放所持有的对象的lock。

    sleep():使一个正在运行的线程处于睡眠状态,是一个静态方法,调用此方法要捕捉InterruptedException异常。

    notify():唤醒一个处于等待状态的线程,注意的是在调用此方法的时候,并不能确切的唤醒某一个等待状态的线程,而是由JVM确定唤醒哪个线程,而且不是按优先级。

    Allnotity():唤醒所有处入等待状态的线程,注意并不是给所有唤醒线程一个对象的锁,而是让它们竞争。

    产生死锁的原因?

    产生死锁的四个必要条件:

    1、互斥条件:一个资源每次只能被一个进程使用。

    2、请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。

    3、不剥夺条件:进程已获得的资源,在末使用完之前,不能强行剥夺。

    4、循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。

    避免死锁

    上面列出了死锁的四个必要条件,我们只要想办法破其中的任意一个或多个条件,就可以避免死锁发生,一般有以下几种方法:

    1、按同一顺序访问对象。

    2、避免事务中的用户交互。

    3、保持事务简短并处于一个批处理中。

    4、使用较低的隔离级别。

    5、使用基于行版本控制的隔离级别。

    6、使用绑定连接。

    以上就是有关进程和线程的总结,有什么好的意见欢迎大家留言。

    展开全文
  • 通俗易懂的 Java 线程进程区别

    千次阅读 2021-01-18 17:28:00
    Java 中,当我们启动 main 函数时其实就是启动了一个 JVM 的进程,而 main 函数所在的线程就是这个进程中的一个线程,也称主线程。 补充:什么是程序 程序是含有指令和数据的文件,被存储在磁盘或其他的数据存储...

    1. 什么是线程和进程

    1.1. 何为进程?

    进程是程序的一次执行过程,是系统运行程序的基本单位,因此进程是动态的。系统运行一个程序即是一个进程从创建,运行到消亡的过程。

    在 Java 中,当我们启动 main 函数时其实就是启动了一个 JVM 的进程,而 main 函数所在的线程就是这个进程中的一个线程,也称主线程。

    补充:什么是程序

    程序是含有指令和数据的文件,被存储在磁盘或其他的数据存储设备中,也就是说程序是静态的代码。
     

    1.2. 何为线程?

    线程与进程相似,但线程是一个比进程更小的执行单位。一个进程在其执行的过程中可以产生多个线程。与进程不同的是同类的多个线程共享进程的堆和方法区资源,但每个线程有自己的程序计数器、虚拟机栈和本地方法栈。所以系统在产生一个线程,或是在各个线程之间作切换工作时,负担要比进程小得多,也正因为如此,线程也被称为轻量级进程。
     
     

    2. 从 JVM 角度说进程和线程之间的关系

    如果对JVM内存模型不太了解的,可以先读一下我的另外一篇博客:

    Java 内存区域详解

    2.1. 图解进程和线程的关系

    下图是 Java 内存区域,通过下图我们从 JVM 的角度来说一下线程和进程之间的关系。(图片来源:JavaGuide)

    在这里插入图片描述
     
    从上图可以看出:一个进程中可以有多个线程,多个线程共享进程的方法区 (JDK1.8 之后的元空间)资源,但是每个线程有自己的程序计数器虚拟机栈本地方法栈

    总结: 线程是进程划分成的更小的运行单位。线程和进程最大的不同在于基本上各进程是独立的,而各线程则不一定,因为同一进程中的线程极有可能会相互影响。线程执行开销小,但不利于资源的管理和保护;而进程正相反。
     

    2.2. 程序计数器为什么是私有的

    程序计数器主要有下面两个作用:

    1. 字节码解释器通过改变程序计数器来依次读取指令,从而实现代码的流程控制,如:顺序执行、选择、循环、异常处理。
    2. 在多线程的情况下,程序计数器用于记录当前线程执行的位置,从而当线程被切换回来的时候能够知道该线程上次运行到哪儿了。

    需要注意的是,如果执行的是 native 方法,那么程序计数器记录的是 undefined 地址,只有执行的是 Java 代码时程序计数器记录的才是下一条指令的地址。

    所以,程序计数器私有主要是为了线程切换后能恢复到正确的执行位置。
     

    2.2. 虚拟机栈和本地方法栈为什么是私有的

    虚拟机栈:

    每个 Java 方法在执行的同时会创建一个栈帧用于存储局部变量表、操作数栈、常量池引用等信息。从方法调用直至执行完成的过程,就对应着一个栈帧在 Java 虚拟机栈中入栈和出栈的过程。

    本地方法栈:

    和虚拟机栈所发挥的作用非常相似,区别是: 虚拟机栈为虚拟机执行 Java 方法 (也就是字节码)服务,而本地方法栈则为虚拟机使用到的 Native 方法服务。 在 HotSpot 虚拟机中和 Java 虚拟机栈合二为一。

    所以,为了保证线程中的局部变量不被别的线程访问到,虚拟机栈和本地方法栈是线程私有的。

     

    2.3. 一句话简单了解堆和方法区

    堆和方法区是所有线程共享的资源。其中是进程中最大的一块内存,主要用于存放新创建的对象 (几乎所有对象都在这里分配内存)。方法区主要用于存放已被加载的类信息、常量、静态变量、即时编译器编译后的代码等数据。

     
     
    参考:

    https://github.com/Snailclimb/JavaGuide

    展开全文
  • Java线程进程区别

    千次阅读 2019-04-26 14:14:55
    线程的概念 概念:线程进程中执行运算最小的单位,是进程中的一个...线程进程区别 一个线程只属于一个进程,但是一个进程可以拥有多个线程,但至少一个线程 资源分配个进程,同一进程中所有线程共享该进程...

    线程的概念
    概念:线程是进程中执行运算最小的单位,是进程中的一个实体,是被系统独立调度和分配的,线程不自己拥有系统资源,只拥有运行中必不可少的资源,但是它可与同属于一个进程中其它线程共享所拥有的资源
    一个线程可以创建和撤销另一个线程,同一进程中多个线程可以并发执行

    线程和进程的区别

    1. 一个线程只属于一个进程,但是一个进程可以拥有多个线程,但至少一个线程
    2. 资源分配个进程,同一进程中所有线程共享该进程的所有资源。
    展开全文
  • 编程面试的一个常见问题是线程进程之间有什么区别?那么它们之间的主要区别在于一个进程是一个正在执行一些代码的程序,而一个线程是这个进程中的一个独立的执行路径。一个进程可以有多个线程来完成独立的任务,...

    简介

    编程面试的一个常见问题是线程和进程之间有什么区别?那么它们之间的主要区别在于一个进程是一个正在执行一些代码的程序,而一个线程是这个进程中的一个独立的执行路径。一个进程可以有多个线程来完成独立的任务,例如一个用于从磁盘读取数据的线程,一个用于处理该数据的线程以及另一个用于通过网络发送该数据的线程。这种提高吞吐量和更好地利用CPU能力的技术也被称为多线程技术。从技术上讲,线程之间最显着的区别是地址空间和上下文切换。进程中的所有线程共享相同的地址空间,但进程有自己的地址空间。类似地,进程之间的上下文切换比线程之间的上下文切换有更大开销。

    Thread vs Process

    接下来,我们从操作系统的角度,或者编程语言的角度如Java,来分析线程和进程之间的差别。

    地址空间

    来自同一进程的所有线程共享创建进程的内存空间,另一方面,每个进程都有自己的地址空间。

    通信机制

    线程可以直接与同一进程的其他线程通信。许多编程语言,如Java提供了线程间通信的工具。它比进程间通信开销低得多。

    开销

    在元数据,上下文切换以及CPU和内存要求方面,与进程相比,线程的开销更少。

    数据段

    线程可以直接访问其进程的数据段,单个进程拥有自己的父进程数据段的副本。

    创建

    新线程可以很容易地创建,例如在Java中,您可以通过创建一个Thread类的对象来创建一个新的线程并调用start()方法,而新进程需要父进程的复制。

    行为

    对父线程的改变,例如守护进程可能会影响进程的其他线程的行为,但对父进程的更改不会影响子进程。

    存在

    一个线程不能没有进程就存在。而且,一个进程至少有一个线程来完成这个工作,例如Java程序的主线程。

    上下文切换

    由于来自同一进程的所有线程共享相同的地址空间,它们之间的线程间通信和上下文切换比进程之间的进程间通信和上下文切换快得多。

    这是每个程序员都应该知道的线程和进程之间的一些根本区别。对比完区别,我们来看一下线程与进程相似的地方。

    相似

    线程和进程在执行代码的意义上有许多相似之处,既有ID,执行时间,优先级和退出状态。两者都可以创建另一个进程和线程,但是线程对同一进程的其他线程有更大程度的控制。进程只能控制子进程。

    总结

    这些就是关于操作系统中的线程和进程之间的区别,它适用于Java或任何其他编程语言。线程是轻量级的,在进程中是一个独立的执行路径。它们共享相同的进程地址空间,与进程相比,开销更小。进程是一个单独的程序,需要自己的地址空间,比线程开销更多。此外,线程和进程之间的差异取决于操作系统的实现。例如,Linux中的一个线程和一个进程之间的差别比Windows小很多。

    展开全文
  • java线程进程区别

    2016-08-05 10:20:26
    我先说一下概念(概念只需要了解一下,便于更好的理解一下面的区别): 进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位。线程进程的一个实体,是CPU...
  • 参考: Java 线程 0 - 前言下面学习 Java进程线程的概念以及它们之间的关系主要内容: 进程 线程 Java进程线程 进程参考:进程Java进程的理解进程(process)是程序的基本执行实体,是进行 资源分配和调度...
  • 如何查看JAVA某个进程下的线程

    万次阅读 2018-09-01 17:30:57
    jps -lvm 用于查看当前机器上运行的java进程。 可以看到所有运行的java进程都列出来了 top -Hp pid可以查看某个进程线程信息 -H 显示线程信息,-p指定pid 如果想查看某个进程下的线程的堆栈信息的话可以...
  • java进程线程通信方法以及进程线程区别
  • 进程线程区别
  • 进程线程区别 1、简而言之,一个程序至少有一个进程,一个进程至少有一个线程. 线程的划分尺度小于进程,使得多线程程序的并发性高。 另外,进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大...
  • 进程Java线程区别

    2014-01-08 10:37:39
    应用程序在执行过程中存在一个内存空间的初始入口点地址、一个程序执行过程中的代码执行序列以及用于标识进程结束的内存...但是进程线程的重要区别在于线程不能够单独执行,它必须运行在处于活动状态的应用程序进程
  • 进程:是一个正在执行的程序。 每个进程执行都有一个执行顺序,该顺序是一个执行路径,或者叫一个控制单元。...线程在控制着进程的执行。 一个进程中至少有一个线程。存在与main方法中的称之为主线程。
  • Java线程: 线程和进程简介

    千次阅读 2018-07-07 20:13:59
    线程进程
  • java线程进程

    千次阅读 2018-03-26 12:35:07
    线程:1)进程中负责程序执行的执行单元2)依靠程序执行的顺序控制流,只能使用程序的资源和环境,共享进程的全部资源3)有自己的堆栈和局部变量,没有单独的地址空间4)CPU调度和分派的基本单位,持有程序计数器,...
  • JAVA线程与线程、进程进程间通信

    万次阅读 2016-07-11 10:54:31
    线程线程间通信 一、多线程间通信方式: 1、共享变量 2、wait/notify机制 3、Lock/Condition机制 二、共享变量 线程间发送信号的一个简单方式是在共享对象的变量里设置信号值。线程A在一个同步块里设置boolean型...
  • Java进程与多线程区别

    千次阅读 2017-12-30 20:57:03
    操作系统中的多任务:在同一时刻运行多个程序的能力。操作系统将CPU的时间片分配给每一个进程,给人并行... 多进程与多线程区别:本质的区别在于每个进程拥有自己的一整套变量,而线程则共享数据。共享变量使线程
  • Java进程线程区别

    万次阅读 2017-02-20 21:21:17
    学习电脑和编程语言就会遇到进程线程,初学者往往会在此陷入迷茫和纠结中。其实弄清这两个概念不是很难。从一定意义上讲,进程就是一个应用程序在处理机上的一次执行过程,它是一个动态的概念,而线程进程中的一...
  • 进程线程区别:对于进程来说,子进程是父进程的复制品,从父进程那里获得父进程的数据空间,堆和栈的复制品。而线程,相对于进程而言,是一个更加接近于执行体的概念,可以和同进程的其他线程之间直接共享数据,...
  • Java进阶(四十三)线程进程区别

    万次阅读 多人点赞 2016-09-28 08:50:07
    Java进阶(四十三)线程进程区别1、线程的基本概念  概念:线程进程中执行运算的最小单位,是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点在运行中必不可少的...
  • 进程线程区别 引入线程的目的:在传统的操作系统中,拥有资源和程序执行的基本单位都是进程,但是为了提高操作系统的并发性能,引入线程作为基本的CPU执行单元。 进程线程的关系:一个进程可以由多个线程...
  • Java并发 day01进程和线程 、并行和并发、 java线程
  • Linux进程查看命令 PS命令 1.不带参数的ps使用 2.显示所有的当前进程 ps –ax -a 代表 all。同时加上x参数会显示没有控制终端的进程。 ps -ax | less 可以结合less命令和管道来使用以方便查看。 3.通过cpu和...
  • 进程线程区别(超详细)

    万次阅读 多人点赞 2019-10-03 21:57:46
    进程线程 进程 一个在内存中运行的应用程序。每个进程都有自己独立的一块内存空间,一个进程可以有多个线程,比如在Windows系统中,一个运行的xx.exe就是一个进程线程 进程中的一个执行任务(控制单元),负责...
  • Java进程线程区别

    千次阅读 2016-07-05 00:08:54
    进程:是并发执行的程序在执行过程中分配和管理资源的基本单位 线程:一个服务器通常需要接收大量且不...线程有时又被称为轻权进程或轻量级进程,也是 CPU 调度的一个基本单位。线程之间共用一个进程的内存空
  • 操作系统中的多任务:在同一时刻运行多个程序的能力。...多进程与多线程区别:本质的区别在于每个进程拥有自己的一整套变量,而线程则共享数据。共享变量使线程之间的通信比进程之间的通信更有效、更容...
  • java中的进程线程区别

    千次阅读 2019-03-12 20:19:10
    【概念】 进程:是并发执行的程序在执行过程中分配和管理资源的基本单位,竞争计算机...【进程 线程区别】 1.地址空间: 进程之间是独立的地址空间,但同一进程线程共享本进程的地址空间。 2.资源占用 同一进...
  • java线程概念区别

    千次阅读 2017-11-29 17:20:25
    1) 什么是线程线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位。程序员可以通过它进行多处理器编程,你可以使用多线程对运算密集...2) 线程进程有什么区别线程是...
  • java进程线程

    2018-02-04 21:57:21
    进程:每个进程都有独立的代码和数据空间(进程上下文),进程间的切换会有较大的开销,一个进程可以包含多个线程进程是资源分配的最小单位。  线程:同一类线程共享代码和数据空间,每个线程有独立的运行栈和...
  • 线程进程区别归纳: a.地址空间和其它资源:进程间相互独立,同一进程的各线程间共享。某进程内的线程在其它进程不可见。 b.通信:进程间通信IPC,线程间可以直接读写进程数据段(如全局变量)来进行通信——...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 356,965
精华内容 142,786
关键字:

java线程进程区别

java 订阅