• 1.认识多线程


    认识多线程

    大家好,从今天开始,我想和大家分享 Java多线程系列教材。接下来我们通过一个简单的例子来感受一下单线程和多线程的区别。

    这是一个简单的单线程程序,它里面有三条输出语句,分别输出的是123,这个程序它的执行结果永远都是123。因为单线程程序它的执行顺序是顺序执行的,也就是说自上而下一条一条依据依次执行的。

    那么下面我们把这个单线程程序用多线程来改造一下,也就是说让它变成一个多线程程序。


    那么我们把三条输出语句分别放入三个不同的线程当中,然后再启动这三个线程。

    我们再来看一下它的执行结果和之前的结结果有什么不同。我们发现我们多线程程序执行的结果是有好几种不同的结果,比如说2013、231132等等情况,

     

     

    这就说明我们多线程的执行顺序不是顺序执行的,而是并行执行的。

    那么顺序执行,它的顺序在一开始的时候已经决定好了,就像这个123一样,那么它的执行顺序也就是123。 

     


    而我们的并行执行它的顺序一开始是同时执行的,所以说最终的结果是不确定的。

     

    那么他的执行顺序取决于什么?取决于哪个线程优先获得CPU的执行权,谁先获得了 CPU的执行权,谁就优先被执行。

    我们再来看一下,对比一下单线程程序和多线程程序。

    我们发现多线程程序里面频繁出现了一个关键字,这个关键字叫做thread。那么中文翻译过来就是线程,什么是线程呢?

    我们可以先看一下现成的基本概念是什么? 


    线程是进程的最基本执行单位,是
    CPU调度的最小单位,

    我们这句话我们要结合我们一个比喻来看,如果说我们把进程比作成一个工厂,

    那么线程就是这个工厂中的一个机器工人,机器工人工作的时候需要电,他没电他就不工作,

    那电从何来,也就是电从CPU里面的CPU就可以,就好比电池它可以给机器工人供电,那么CPU的核心数就好比,就是这个电池上面有几个充电线,而充电线就是连接电池和机器人功能的。

    那么我们再来结合线程的概念来说的话,一个工厂他想要运行,它里面至少需要一个机器工人,而机器工人他想要工作他就需要电。 


    所以说它就需要
    CPU给它供电统领一个进程,它里面至少需要一个线程,而线程的运行它离不开CPU。

    那么平时我们所说的单线程单线程就好比就是一个工厂配一个工人,统领我们的单号CPU也是一样的,就好比一个电池配合充电线,

    单进程多线程的话,就是一个工厂里面有多名工人,然后多核CPU的话就是一个电池配多个充电线,那么这也就意味着可以给多名工人同时充电m这个多名工人可以同时工作,那么这也就是多线程的核心,对不对?


    多线程的存在就是为了同步完成专项任务的,而是提高了资源的使用效率。

    什么时候开始使用线程

    那么说呢这么多,那么什么时候开始使用线程,那么在同一时间需要完成多项任务的时候,我们就可以使用到线程。比如说我们同时下载多张照片,同时上传多个文件,等等都是需要使用到线程。

     总结

    最后我们来总结一下今天内容,今天我们主要说了两点,第一点我们说了线程的基本概念,也就是说线程是进程的基本执行单位,也就是说线程是进程中做事的那一个。然后第二点就是我们说的什么时候需要线程,我们在同一时间需要完成多项任务的时候,这个时候我们就需要使用到线程。 




      

    附录:

    笔记完整文本:

    大家好,从今天开始,我想和大家分享 Java多线程系列教材。接下来我们通过一个简单的例子来感受一下单线程和多线程的区别。这是一个简单的单线程程序,它里面有三条输出语句,分别输出的是123,这个程序它的执行结果永远都是123。因为单线程程序它的执行顺序是顺序执行的,也就是说自上而下一条一条依据依次执行的。那么下面我们把这个单线程程序用多线程来改造一下,也就是说让它变成一个多线程程序。 那么我们把三条输出语句分别放入三个不同的线程当中,然后再启动这三个线程。我们再来看一下它的执行结果和之前的结结果有什么不同。我们发现我们多线程程序执行的结果是有好几种不同的结果,比如说2013、231132等等情况,这就说明我们多线程的执行顺序不是顺序执行的,而是并行执行的。那么顺序执行,它的顺序在一开始的时候已经决定好了,就像这个123一样,那么它的执行顺序也就是123。 而我们的并行执行它的顺序一开始是同时执行的,所以说最终的结果是不确定的。那么他的执行顺序取决于什么?取决于哪个线程优先获得CPU的执行权,谁先获得了 CPU的执行权,谁就优先被执行。我们再来看一下,对比一下单线程程序和多线程程序。我们发现多线程程心里面频繁出现了一个关键字,把这个关于字叫做thread。那么中文翻译过来就是线程,什么是线程呢?我们可以先看一下现成的基本概念是什么? 新城市进程的最基本执行单位是CPU调度的最小单位,我们这句话我们要结合我们一个比喻来看,如果说我们把金诚比作成一个工厂,那么线程就是这个工厂中的一个机器工人,机器工人工作的时候需要电,他没电他就不工作,那电从何来,也就是电从CPU里面的CPU就可以,就好比电池它可以给机器工人供电,那么CPU的核心数就好比就是这个电子上面有几个充电线,而充电线就是连接电池和机器功能的。那么我们再来结合现成的概念来说的话,一个工厂他想要运行,它里面至少需要一个机器工人,而机器工人他想要工作他就需要电。 所以说它就需要CPU给它供电统领一个进程,它里面至少需要一个线程,而线程的运行它离不开CPU。那么平时我们所说的单线程单线程就好比就是一个工厂配一个工人,统领我们的单号CPU也是一样的,就好比一个电池配合充电线,单进程多线程的话,就是一个工厂里面有多名工人,然后多核CPU的话就是一个电池配多个充电线,那么这也就意味着可以给多名工人同时充电m这个多名工人可以同时工作,那么这也就是多线程的核心,对不对? 多线程的存在就是为了同步完成专项任务的,而是提高了资源的使用效率。那么说呢这么多,那么什么时候开始使用线程,那么在同一时间需要完成多项任务的时候,我们就可以使用到县城。比如说我们同时下载多张照片,同时上传多个文件,等等都是需要使用到线程。最后我们来总结一下今天内容,今天我们主要说了两点,第一点我们说了现成的基本概念,也就是说线程是进程的基本执行单位,也就是说线程进程中做事的那一个。然后第二点就是我们说的什么时候需要线程,我们在同一时间需要完成多项任务的时候,这个时候我们就需要使用到线程。 好,在视频的之后想要了解更多教化教材,请关注我们。

     

  • 相关阅读:
    【转】EditText获取焦点不自动弹出键盘设置--失去焦点的方法,不错
    【转】eclipse android 设置及修改生成apk的签名文件 -- custom debug keystore
    【转】Adnroid4.0 签名混淆打包(conversion to dalvik format failed with error 1)
    【转】Android Fragment 基本介绍--不错
    【转】java代码中实现android背景选择的selector-StateListDrawable的应用
    【转】android官方侧滑菜单DrawerLayout详解
    【转】微信Android SDK示例代码及运行方法
    【转】Eclipse中设置ButterKnife进行注解式开发步骤 -- 不错
    【转】ButterKnife基本使用--不错
    python 命令行:help(),'more'不是内部或外部命令,也不是可运行的程序或批处理文件
  • 原文地址:https://www.cnblogs.com/cj8357475/p/16085934.html
Copyright © 2020-2023  润新知