zoukankan      html  css  js  c++  java
  • 线程和进程的一些基本概念

    线程和进程的一些基本概念

    1.线程指进程中的一个执行场景,也就是执行流程,那么进程和线程有什么区别呢?

      每个进程是一个应用程序,都有独立的内存空间   

      同一个进程中的线程共享其进程中的内存和资源(共享的内存是堆内存和方法区内存,栈内存不共享,每个线程有自己的。)


    2.什么是进程?

    一个进程对应一个应用程序。例如:在 windows 操作系统启动 Word 就表示启动了一个进程。在 java 的开发环境下启动 JVM,就表示启动了一个进程。现代的计算机都是支持多进程的,在同一个操作系统中,可以同时启动多个进程。

    3.多进程有什么作用?
    单进程计算机只能做一件事情。玩电脑,一边玩游戏(游戏进程)一边听音乐(音乐进程)。对于单核计算机来讲,在同一个时间点上,游戏进程和音乐进程是同时在运行吗?不是。因为计算机的 CPU 只能在某个时间点上做一件事。由于计算机将在“游戏进程”和“音乐进程”之间频繁的切换执行,切换速度极高,人类感觉游戏和音乐在同时进行。多进程的作用不是提高执行速度,而是提高 CPU 的使用率。进程和进程之间的内存是独立的。

    4.什么是线程?
    线程是一个进程中的执行场景。一个进程可以启动多个线程。

    5.多线程有什么作用?
    多线程不是为了提高执行速度,而是提高应用程序的使用率。
    线程和线程共享“堆内存和方法区内存”,栈内存是独立的,一个线程一个栈。
    可以给现实世界中的人类一种错觉:感觉多个线程在同时并发执行。

    6.java 程序的运行原理?
    java 命令会启动 java 虚拟机,启动 JVM,等于启动了一个应用程序,表示启动了一个进程。该进程会自动启动一个“主线程”,然后主线程去调用某个类的 main 方法。所以 main方法运行在主线程中。在此之前的所有程序都是单线程的。

    7.线程生命周期
    线程是一个进程中的执行场景,一个进程可以启动多个线程


    新建:采用 new 语句创建完成
    就绪:执行 start 后
    运行:占用 CPU 时间
    阻塞:执行了 wait 语句、执行了 sleep 语句和等待某个对象锁,等待输入的场合
    终止:退出 run()方法
       

    8.很多人都对其中的一些概念不够明确,如同步、并发等等,让我们先建立一个数据字典,以免产生误会。

        多线程:指的是这个程序(一个进程)运行时产生了不止一个线程
        并行与并发:
            并行:多个cpu实例或者多台机器同时执行一段处理逻辑,是真正的同时。
            并发:通过cpu调度算法,让用户看上去同时执行,实际上从cpu操作层面不是真正的同时。并发往往在场景中有公用的资源,那么针对这个公用的资源往往产生瓶颈,我们会用TPS或者QPS来反应这个系统的处理能力。

    原文:https://blog.csdn.net/fang323619/article/details/73904351

  • 相关阅读:
    Centos下安装Redis
    BZOJ 4870 [Shoi2017]组合数问题 ——动态规划 矩阵乘法
    BZOJ 4868 [Shoi2017]期末考试 ——三分 枚举
    BZOJ 4584 [Apio2016]赛艇 ——动态规划
    BZOJ 2806 [Ctsc2012]Cheat ——后缀自动机 单调队列优化DP
    BZOJ 2330 [SCOI2011]糖果 ——差分约束系统 SPFA
    Topcoder SRMCards ——贪心
    CTSC 1999 家园 【网络流24题】星际转移
    BZOJ 3489 A simple rmq problem ——KD-Tree
    BZOJ 2733 [HNOI2012]永无乡 ——线段树 并查集
  • 原文地址:https://www.cnblogs.com/tutubaobao/p/10050218.html
Copyright © 2011-2022 走看看