• 多线程相关基础知识


    进程:一般来说启动了一个应用程序就会启动一个进程,当然有时候也会启动多个进程。比如说启动了QQ的时候除了启动QQ.exe,还会启动一个QQProtect.exe和TXPlatform.exe进程。每个进程都有自己独立的一块内存空间,一个进程中可以启动多个线程。进程是内存资源分配的基本单位。

    线程:线程是进程中的一个执行流程,一个进程中可以运行多个线程。比如java.exe进程中可以运行很多线程。线程总是属于某个进程,进程中的多个线程共享进程的内存空间。线程是CPU分配的基本单位。

    线程在它的生命周期中会处于各种不同的状态:新建、就绪、运行、阻塞、死亡。

    1. 新建(New)

    用new语句创建的线程对象处于新建状态,此时它和其他java对象一样,仅被分配了内存。仅仅作为一个对象实例存在。

    2.就绪(Ready)

    当一个线程对象创建后,其他线程调用它的start()方法,该线程就进入就绪状态。处于这个状态的线程位于Java虚拟机的可运行池中,等待cpu的使用权。

    3. 运行状态(Running)

    处于这个状态的线程占用CPU,执行程序代码。在并发运行环境中,如果计算机只有一个CPU,那么任何时刻只会有一个线程处于这个状态。

     只有处于就绪状态的线程才有机会转到运行状态

    4. 阻塞状态(Blocked)

    阻塞状态是指线程因为某些原因放弃CPU,暂时停止运行。当线程处于阻塞状态时,直到线程重新进入就绪状态,它才会有机会获得运行状态。

    5 .死亡状态(Dead)

    当线程执行完run()方法中的代码,或者遇到了未捕获的异常,就会退出run()方法,此时就进入死亡状态,该线程结束生命周期。

  • 相关阅读:
    .net core EF 入门笔记Code First
    Windows环境下安装MongodDB
    Ueditor1.4.3.3 富文本编辑器在图片不显示问题
    .net IIS网站部署Host文件简单应用
    .Net初学Less的安装与部署
    EF+MVC动态Lamda表达式拼接(学习笔记二)
    EF+MVC动态Lamda表达式拼接(学习笔记)
    区块链从入门到放弃
    Unity3D的update和FixedUpdate
    忽雷太极拳十三式
  • 原文地址:https://www.cnblogs.com/zhangminghui/p/3610646.html
Copyright © 2020-2023  润新知