zoukankan      html  css  js  c++  java
  • 线程基础概念

    java语言的优势之一就是多线程处理较为简单。

    程序

    指令+数据的byte序列,如:qq.exe

    进程

    对于操作系统而言,同时运行的每一个任务就是一个应用程序。对于操作系统级别同时运行的任务,成为进程。比如:qq.exe,eclipse,IE等。正在运行的程序,是程序动态的执行

    线程

    对于一个进程而言(程序):在程序内部也会同时运行多个任务,那个每一个任务称为一个线程。

    并发

    线程的运行是并发执行的。所谓并发:宏观上所有的线程都是同时运行,但微观上看所有线程都是走走停停的

    同步和异步

    执行有先后顺序的是同步运行。执行没有先后顺序的是异步执行(并发执行),即你执行你的,我执行我的

    线程调度

    在运行池中,会有多个处于就绪状态的线程在等待CPU,JAVA虚拟机的一项任务就是负责线程的调度,线程调度是指按照特定机制为多个线程分配CPU的使用权.有两种调度模型:分时调度模型和抢占式调度模型。

    1. 分时调度模型是指让所有的线程轮流获得cpu的使用权,并且平均分配每个线程占用的CPU的时间片这个也比较好理解。

    2. java虚拟机采用抢占式调度模型,是指优先让可运行池中优先级高的线程占用CPU,如果可运行池中的线程优先级相同,那么就随机选择一个线程,使其占用CPU。处于运行状态的线程会一直运行,直至它不得不放弃CPU。

    java的线程调度是不分时的,同时启动多个线程后,不能保证各个线程轮流获得均等的CPU时间片。

    时间片

    时间片即CPU分配给各个程序的时间,每个进程被分配一个时间段,称作它的时间片,即该进程允许运行的时间,使各个程序从表面上看是同时进行的。如果在时间片结束时进程还在运行,则CPU将被剥夺并分配给另一个进程。如果进程在时间片结束前阻塞或结束,则CPU当即进行切换。而不会造成CPU资源浪费。在宏观上:我们可以同时打开多个应用程序,每个程序并行不悖,同时运行。但在微观上:由于只有一个CPU,一次只能处理程序要求的一部分,如何处理公平,一种方法就是引入时间片,每个程序轮流执行。

  • 相关阅读:
    RDA CoreDump 实例
    MQTT协议-MQTT协议简介及协议原理
    Android Framework中的Application Framework层介绍
    Shell 通配符、元字符、转义符*****
    RDA 多屏参流程
    makefile 参数
    Makefile 使用总结
    Oracle 补丁及opatch 工具介绍
    Oracle 块修改跟踪 (Block Change Tracking) 说明
    oracle手动删除数据库
  • 原文地址:https://www.cnblogs.com/qin-derella/p/6588252.html
Copyright © 2011-2022 走看看