zoukankan      html  css  js  c++  java
  • 线程池、匿名内部类、创建线程

    第1章     创建线程

    1.1      Thread类

     

    l  构造方法

     

    l  常用方法

     

    1.2      创建线程方式一继承Thread类

    获取线程名称

     

    自定义run方法,需要继承Thread,然后重写run方法。

     

    之后主线程走代码执行,到开启代码的时候开启run方法,之后运行到for循环,这个时候已经开的run方法线程也开始走了,所以就是一起执行,效果图

     

    1.2.1    多线程的内存图解

    原理图:

     

    两个都是站,首先在栈里的main方法中的主线程运行,创建新线程后开启另一个栈新的栈里面继承了Thread重写了run方法并且。这个时候main方法所在的主线程走到了开启线程,也就是运行线程,所以run方法线程里的for循环和刚开启玩线程的main方法也开始下一波的代码运行,就是俩两个for循环一起运行,因为java是用的抢占式调度所以显示的没有顺序。这就是多线程原理,主线程的地位

    1.3      创建线程方式—实现Runnable接口

     

    l  接口中的方法

     

    l  Thread类构造方法

     

    1.3.1    实现Runnable的原理

    Runnable是接口,Threads是继承, Runnable避免了单继承性,Threads类中的继承了run方法的MyThreads类中,只继承了Threads不能再继承其他类,而Runnable是接口,Runnable中的MyRunnable重写run方法的实现类中实现了Runnable并且如果你有其他的需求,可以再继承别的类。

    Threads的运行代码顺序是创建新线程和开启新线程都是用thread调用。

    而Runnable只负责开启线程,比较推荐Runnable

    对比一下

     

    Runnable

     

    Threads

     

    1.3.2    实现Runnable的好处

    Runnable接口避免了单继承的局限性,所以较为常用。

    实现Runnable接口的方式,更加的符合面向对象,线程分为两部分,一部分线程对象,一部分线程任务。

    继承Thread类,线程对象和线程任务耦合在一起。一旦创建Thread类的子类对象,既是线程对象,有又有线程任务。实现runnable接口,将线程任务单独分离出来封装成对象,类型就是Runnable接口类型。Runnable接口对线程对象和线程任务进行解耦。

    也就是说,Thread粘合性太强,一个错全部错,而Runnable可以拆分一样

    Runnable测试类

     

    MyRunnable重写run方法

     

    1.4      线程的匿名内部类使用

           /*    匿名内部类

           new 父类或接口类名(){

                  需要重写的方法

           }

           */

    Thread内部类

     

    new完之后快捷键点出来就可以了,想要多次运用可以创建个对象接受

    Runnable内部类

     

    New完之后方法点出来给他顶一个run接收一下返回值

    第2章     线程池

    2.1      线程池概念

    可以创建一个容器来容纳线程,省去了创建线程的操作,并且用完了的线程可以返回到线程池里,下图为老式办法,但是原理是一样的

     

    2.2      使用线程池方式—Callable接口

    线程状态

     

  • 相关阅读:
    用小百合学python
    驱动对象 设备对象 设备栈 乱杂谈
    [转]很经典的http协议详解
    利用VMWare和WinDbg调试驱动程序
    GCC基础
    史上最著名的10个思想实验 (转)
    windows XP下驱动开发环境设置(DDK+VC6.0)
    守护进程
    驱动SYS开发总结
    ASP.NET学习笔记1
  • 原文地址:https://www.cnblogs.com/pandam/p/11187085.html
Copyright © 2011-2022 走看看