zoukankan      html  css  js  c++  java
  • Java_进程与线程

    进Process&Thread

    区别 进程 线程
    根本区别 作为资源分配的单位 调度和执行的单位
    开销 每个进程都有独立的代码和数据空间(进程上下文), 进程间的切换会有较大的开销 线程可以看成是轻量级的进程, 同一类线程共享代码和数据空间, 每个线程有独立的运行栈和程序计数器(PC), 线程切换的开销小
    所处环境 在操作系统中能同时运行多个任务(程序) 在同一应用程序中有多个顺序流同时执行
    分配内存 系统在运行的时候会为每个进程分配不同的内存区域 除了CPU之外, 不会为线程分配内存(线程所使用的资源是它所属进程的资源), 线程组只能共享资源
    包含关系 没有线程的进程是可以看作单线程的, 如果一个进程内拥有多个线程, 则执行过程不是一条线的, 而是多条线程共同完成的 线程是进程的一部分, 所有线程有的时候被称为是轻权进程或者轻量级进程

    注意: 很多多线程是模拟出来的, 真正的多线程是指多个CPU, 即多核, 如服务器. 如果是模拟出来的多线程, 即一个CPU的情况下, 在同一个时间点, CPU只能执行一个代码, 因为切换的速度很快, 所以就有同时执行的错觉.

    核心概念:

    线程就是独立执行路径
    在程序运行时, 即使没有自己创建线程, 后台也会存在多个线程, 如gc线程, 主线程
    main()称为主线程, 为系统的入口点, 用于执行整个程序
    在一个进程中, 如果开辟了多个线程, 线程的运行有调度器安排调度, 调度器是与操作系统密切相关的, 先后顺序是不能人为干预
    对同一份资源操作时, 会存在资源抢夺的问题, 需要加入并发控制
    线程会带来额外的开销, 如CPU调度时间, 并发控制开销
    每个线程在自己的工作内存交互, 加载和存储主内存控制不当会造成数据不一致

  • 相关阅读:
    使用fiddler对手机APP进行抓包
    接口测试xml格式转换成json
    python datetime笔记
    python time模块详解
    python time相关操作
    2013流行Python项目汇总
    大象的崛起!Hadoop七年发展风雨录
    利用Mahout实现在Hadoop上运行K-Means算法
    20个开源项目托管站点推荐
    有用的国外开源项目网址
  • 原文地址:https://www.cnblogs.com/hesper/p/9753657.html
Copyright © 2011-2022 走看看