• 线程基础知识


    线程调度方式:

    • 分时调度

    平均分配每个线程占用 CPU 的时间。

    • 抢占式调度

    优先让优先级高的线程使用 CPU,如果线程的优先级相同,那么会随机选择一个线程执行,Java使用的为抢占式调度。

    多线程的内存解析:

    多线程执行时,在栈内存中,其实每一个执行线程都有一片自己所属的栈内存空间;

    线程的栈内存是运行start()方法时创建的(备注:每执行一次start()方法都会创建一个栈空间),并且栈内存都是线程私有的;

    当执行线程的任务结束了,线程自动在栈内存中释放了。但是当所有的执行线程都结束了,那么进程就结束了。

    图解:

    Runnable、Callable接口的方式创建线程区别:

    Callble:能有返回值,能抛出异常;

    使用接口Runnable 、Callable 实现接口的好处:

    线程子类实现了 Runnable 或 Callable接口,还可以继承其他类;
    更加的符合面向对象编程思想,线程对象线程任务分离、实现解耦;

    继承 Thread 类实现线程解析:

    优点:
    编码相对于实现接口简单一些;

    缺点:
    线程类已经继承了Thread类,所以不能再继承其他父类;
    继承Thread类,线程对象和线程任务耦合在一起。一旦创建Thread类的子类对象,既是线程对象,又有线程任务。

    线程生命周期图:

  • 相关阅读:
    小熊派接入华为IOT
    VS2022 C++ 支持热重载
    Go入门笔记43HGet查询
    Go入门笔记45在WSL2上测试串口编程
    Yarn全新安装
    EdgexGo2.0学习19 no secty依然提示让输入token
    Ubuntu20.04安装Emqx
    shell脚本中echo显示内容带颜色
    EdgexGo2.0学习20 编译EdgeX Go UI
    EdgexGo2.0学习18 消息总线目标
  • 原文地址:https://www.cnblogs.com/tangshengwei/p/11668306.html
Copyright © 2020-2023  润新知