zoukankan      html  css  js  c++  java
  • 进程和线程的区别与联系

    今天继续复习之前的笔记,写的内容是关于线程和进程的。

    温故知新(二)

    线程

    线程(Thread)是进程中某个单一顺序的控制流。
    线程的启动要调用start()方法,只有这样才能创建新的调用栈。直接调用run()方法的话,就不会创建新的调用栈,也就不会创建新的线程,run()方法就与普通的方法没什么区别了。

    ☆进程和线程的区别与联系☆

    1、一个程序至少有一个进程,一个进程至少有一个线程。线程的划分尺度小于进程,使得多线程程序的并发性高。

    2、进程在执行过程中拥有独立的内存单元,而多个线程共享内存。

    3、每个独立的线程有一个程序运行的入口、顺序执行序列和程序的出口。但是线程不能独立运行,必须依赖于应用程序中。

    4、从逻辑角度看,多线程的意义在于一个应用程序中有多个执行部分可以同时执行。操作系统并没有将多个线程看作是多个独立的应用,来实现进程的调度和管理,以及资源分配。

    5、进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,也是系统进行资源分配和调度的一个独立单位。

    6、线程是进程的一个实体,是CPU调度和分派的基本单位。它是比进程更小的能运行的基本单位。线程本身基本上不拥有系统资源,只拥有一点在运行时必不可少的资源(如程序计数器、一组寄存器和栈),但是它可与同属一个进程的其它线程共享进程所拥有的全部资源。

    7、一个线程可以创建和撤销另一个线程,同一个进程中的多个线程之间可以并发执行

    总而言之,进程有独立的地址空间,一个进程崩溃后,在保护模式下不会对其它进程产生影响。而线程只是一个进程中的不同执行路径。线程有自己的堆栈和局部变量,但线程之间没有独立的地址空间,一个线程死掉就等于整个进程死掉,所以多进程的程序要比多线程的程序健壮。但在进程切换时,耗费资源较大,效率较低。不过,对于一些要求同时进行并且又要共享某些变量的并发操作,只能用线程

  • 相关阅读:
    .net core读取appsettings.config中文乱码问题
    vs2017错误:当前页面的脚本发生错误
    VS Code中无法识别npm命令
    Visual Studio报错/plugin.vs.js,行:1074,错误:缺少标识符、字符串或数字
    记录一次在生成数据库服务器上出现The timeout period elapsed prior to completion of the operation or the server is not responding.和Exception has been thrown by the target of an invocation的解决办法
    Java集合框架
    java hash表
    Java Dictionary 类存储键值
    java数据结构 栈stack
    java封装
  • 原文地址:https://www.cnblogs.com/siyecho/p/9446530.html
Copyright © 2011-2022 走看看