黑马程序员技术交流社区

标题: 多线程的总结 [打印本页]

作者: 李明全    时间: 2015-4-26 21:46
标题: 多线程的总结
         线程:

        进程:正在运行的应用程序
       
        线程:进程中的一条执行路径

        单线程: 应用程序只有一条执行路径
        多线程: 应用程序有多条执行路径
        |---创建线程的两种方式:
方式1: 继承Thread
                                a: 自定义类 继承 Thread
                                b: 重新Thread类中的run()方法
                                c: 创建自定义类对象(线程对象)
                                d: 启动线程? start()方法
               
                方式2: 实现Runnable
                                a: 自定义类  实现 Runnable
                                b: 实现接口中的run()方法
                                c: 创建自定义类对象
                                d: 创建Thread对象,然后把自定义类对象 作为构造方法的参数使用
                                e: 开启线程, start()方法
        |---多线程的几种状态:临时阻塞状态(具备CPU执行资格,不具备执行权),运行状态(线程具备执行资格和执行权),冻结状态(线程不具备CPU执
行资格,线程释放CPU执行权)
        |---多线程里面的重点内容:(面试有人被问过)
        同步机制:
        解决多线程安全问题

        同步代码块
                格式:
                synchronized (锁对象) {
                        需要同步的代码
                }
               
        同步方法
                (普通同步方法)
                (静态同步方法)
                格式:
                修饰符 synchronized 返回值类型 方法名(参数列表){....}
               
        注意:
                同步代码块,如果有多个同步代码块,那么锁对象,要求一致
                同步方法,同步方法的锁对象是谁?  this
                同步方法,同步静态方法的锁对象是谁?  字节码文件对象, 类名.class


Collections
                public static 集合 synchronizedXxx(Xxx 集合): 把不同步的集合, 变成 线程同步的集合
         
                死锁:最常见的原因是锁的嵌套循环,例如if  else判断语句里面,当线程满足if条件,获得A锁执行if里面的同步,A同步里面还嵌套
了一个同步,需要B锁,这时线程切换到else条件,获得了B锁执行里面的同步,这个同步里面也嵌套了一个同步,需要获得A锁才能执行。
                sleep是线程冷却,比喻说释放魔法技能有技能CD。







欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2