• 线程进程区别


    • 操作系统中线程和进程的区别?
    • 一个进程是不是可以创建无限数量的线程?
    • 线程的数量会受到什么限制?
    • 线程在内存中会占用什么资源?

    操作系统中线程和进程的区别?

    进程:在操作系统中能够独立运行,并且作为资源分配的基本单位。它表示运行中的程序。

    线程:是进程中的一个实例,作为系统调度和分派的基本单位。是进程中的一段序列,能够完成进程中的一个功能。

      1.同一个进程可以包含多个线程,一个进程中至少包含一个线程,一个线程只能存在于一个进程中

      2.同一个进程下的所有线程能够共享该进程下的资源。(系统运行时会为每个进程分配不同的内存区域,但不会为线程分配内存。线程只能共享它所属进程的资源。)

      3.进程结束后,该进程下的所有线程将销毁,而一个线程的结束不会影响同一进程下的其他线程

      4.线程是轻量级的进程,它的创建和销毁所需要的时间比进程小得多,所有操作系统的执行功能都是通过创建线程去完成的

      5.线程在执行时是同步和互斥的,因为他们共享同一个进程下的资源

      6.在操作系统中,进程是拥有系统资源的独立单元,它可以拥有自己的资源。一般而言,线程不能拥有自己的资源,但是它能够访问其隶属进程的资源。

    一个进程可以定义程序的一个实例。在Win32中,进程并不执行什么,它只是占据应用程序所使用的地址空间。为了让进程完成一定的工作,进程必须至少占有一个线程,正是这个线程负责包含进程地址空间中的代码。实际上,一个进程可以包含几个线程,它们可以同时执行进程地址空间中的代码。为了做到这一点,每个线程有自己的一组CPU寄存器和堆栈。每个进程中至少有一个线程在执行其地址空间中的代码。如果没有线程执行进程地址空间中的代码,进程也就没有继续存在的理由,系统将自动清除进程及其地址空间。

    一个进程是不是可以创建无限数量的线程?

      不是。

      操作系统给一个系统进程提供的空间是2GB ,而一个线程堆栈的空间默认在启动的时候是1MB,理论上最大线程数=2GB/1MB=2048。但是内存当然不可能完全拿来作线程的栈,所以实际数目要比这个值要小。你也可以通过连接时修改默认栈大小,将其改的比较小,这样就可以多开一些线程。如将默认栈的大小改成512K,这样理论上最多就可以开4096个线程。

      如果是同一台机器内的话,能起多少线程也是受内存限制的。

    线程的数量会受到什么限制?

      受内存限制。

    线程在内存中会占用什么资源?

      线程拥有自己的私有内存。从深入理解虚拟机书中可知 JDK1.7中的线程私有内存包括JAVA虚拟机栈,本地方法栈以及程序计数器,每当你创建一个新的线程那么它就拥有这一部分的空间。而系统分配给每个进程的内存是有限的,当创建的线程数过多,就会导致内存溢出。(摘自网友回答,不知道对不对)
  • 相关阅读:
    js的数组问题
    2014的希冀
    js事件在不同浏览器之间的差异
    jackson 实体转json 为NULL或者为空不参加序列化
    spring的嵌套事务
    Mysql的事务及行级锁
    Nginx简介及配置文件详解
    springmvc常用注解标签详解
    springmvc相关配置和用法
    Java并发编程(一):进程和线程之由来
  • 原文地址:https://www.cnblogs.com/toria/p/11123130.html
Copyright © 2020-2023  润新知