如果程序只有一条执行路径,那么给程序就是单线程程序
    如果程序有多条执行路径,那么该程序就是多线程程序

    1. 1:要想了解多线程,就必须了解线程,要想了解线程,就必须了解进程,因为线程是依赖于进程存在的
    2. 2、什么是进程:通过任务管理器可以看到进程的存在,只有运行的程序才会出现在进程中
    3. 进程:就是正在运行的程序,是系统进行资源分配和调用的独立单位,每一个进程都有自己的内存空间和系统资源
    4. 3、多进程的意义:
    5. 单进程的计算机只能做一件事情,而现在的计算机可以做多件事情
    6. 现在的计算机是可以支持多进程,就是可以在一个时间段执行多个任务
    7. 多进程的可以提高cpu的使用率
    8. 问题:一边玩游戏,一边听音乐是同时进行的吗?
    9. 不是,单核cpu在某一时间点上只能做一件事情
    10. 而在玩游戏和听音乐的时候,是cpu在做着程序间的高效切换让我们觉得是同时进行的
    11. 4、什么是多线程:
    12. 在一个进程内可以执行多个任务,而这每一个任务可以看作是一个线程
    13. 线程:是程序的执行单元,执行路径,是程序使用cpu的基本单位
    14. 单线程:如果程序只有一条执行路径
    15. 多线程:如果程序有多条执行路径
    16. 5、多线程的的意义:
    17. 多线程的存在,而不是提高程序的执行速度 ,其实是为了提高程序的使用率
    18. 程序的执行其实都是在抢CPU的资源、cpu的执行权
    19. 而多个进程是在抢这个资源,而其中的某一个进程如果执行路径比较多,就会有更高的几率抢到CPU的执行权
    20. 我们是不能保证每个线程在哪个时刻抢到,所以线程的执行有随机性。
    21. 并行和并发:
    22. 前者是逻辑上同时发生的,指在某一时间内同时运行多个程序
    23. 后者是物理上同时发生的,指在某一时间点同时运行多个程序
    24. 6java程序的运行原理:
    25. java命令启动了JVMJVM启动其实就相当于启动了一个进程,
    26. 接着有该进程创建了一个主线程去调用main方法
    27. 思考题:jvm虚拟机的启动是单线程还是多线程的:
    28. 多线程
    29. 因为是垃圾回收线程要先启动,否在会出现内存溢出
    30. 现在的自己回收线程加上前面的主线程,最低是两个线程,故jvm的的程序是多线程的

    面试题:
    线程的生命周期:
    新建:创建线程对象
    就绪:有执行资格,没有执行权
    运行:有资格执行,有使用权
    阻塞:由于一些操作让线程处于了该状态,没有执行资格,没有执行权
    而另一些操作可以被他激活,激活后就是一种就绪状态
    死亡:线程对象变成垃圾,等待被回收

    多线程的实现方案有两种
    继承Thread类
    实现Runnable接口
    相比继承Thread类,实现Runnable接口的好处
    避免了Java单继承的局限性 适合多个相同程序的代码去处理同一个资源的情况,把线程和程序的代码、数据有效分离,较好的体现 了面向对象的设计思想
    Screenshot_2020-08-01-21-48-03.png
    Screenshot_2020-08-02-10-49-44.png
    Screenshot_2020-08-02-10-54-09.png
    Screenshot_2020-08-02-10-56-58.png

    • 单例模式:保证类在内存中只有一个对象

    • 如何保证类在内存中只有一个对象?
    • 1.构造方法私有
    • 2.在成员位置创建一个对象
    • 3.通过一个公共的方法提供访问