zoukankan      html  css  js  c++  java
  • 多线程相关基础知识

    进程:一般来说启动了一个应用程序就会启动一个进程,当然有时候也会启动多个进程。比如说启动了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()方法,此时就进入死亡状态,该线程结束生命周期。

  • 相关阅读:
    PHP 计算程序运行的时间
    PHP 简易版生成随机码
    PHP读取FLASH 文件信息
    MongoDB基本使用
    PHP实现QQ达人信息抓取
    bjtuOJ 1188 素数筛选
    bjtuOJ 1139 Longest Common Subsequence
    BJTU1113扫雷问题
    C#线程池的使用详解
    C#域名解析的简单制作
  • 原文地址:https://www.cnblogs.com/zhangminghui/p/3610646.html
Copyright © 2011-2022 走看看