黑马程序员_多线程

来源:互联网 发布:波兰黄金列车 知乎 编辑:程序博客网 时间:2024/05/20 18:16

javaEE+android培训


多线程
    创建线程的一种方法:
        1.定义类继承Thread
        2.覆写Thread类中的run方法
            目的:将自定义打你吗存储在run方法中,让线程运行
        3.调用线程的start方法
            作用:启动线程,调用run方法
        4.线程的5中状态,见图
        5.Thread中几个方法:
            static Thread currentThread();获取当前线程对象
            getName();获取线程名称
            设置线程名称:serName或者构造函数
    创建线程的第二种方法:
        1.定义类实现Runnable接口
        2.覆盖Runable接口中的run方法
            将线程要运行的代码存放在该run方法中
        3.通过Thread类建立Thread类对象
        4。将Runnable接口的子类对象作为实际参数传给Thread类的构造参数
            原因:自定义的run方法所属的对象是Runnable接口的子类对象,所以要让线程去指定对象的run方法,就必须明确该run方法所属对象
        5.调用Thread类的start方法开启线程并调用Runnable接口子类的run方法
    两者的区别
        Runanble好处:避免了单继承的局限性(在建立时建议用Runnable实现)
        继承Thread:线程代码存放在Thread子类run方法中
        实现Runnable:线程代码存放在接口的子类run方法中
    静态同步的方法:使用的所示该方法所在类的字节码文件对象
    wait(),notify(),notifyAll()都使用在同步中,因为要对持有监视器(锁)的线程操作,所以要使用在同步中,因为只有同步才具有锁
    这些操作线程的方法要定义在Object中:因为这些方法在操作同步中线程是,都必须要标识他们所操作线程只有的锁,不可以对不同锁中的线程进行唤醒
    在线程中为了能够唤醒对方线程而不唤醒本方线程引入了新的特性:
        将同步Synchronized替换成lock操作,(因为lock上支持多个对象)
        将object中的wait,notify,notifyAll,替换成了Condition对象
        该对象可以Lock锁,进行获取
    线程停止的方法:
        控制住循环,让run方法结束,也就是线程结束
        特殊情况:
            当线程处于了冻结状态,就不会读取到标记,那么线程就不会结束,这时需要对冻结进行清除,强制线程恢复到运行状态中来,这样就可一操作标记让线程结束
    join:
        join可以用来临时加入线程执行



0 0