A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© xf441775852 初级黑马   /  2018-11-22 13:10  /  873 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

线程开启的方式
* 方式一 (继承Thread)
    1. 定义类继承Thread
    2. 重写run方法
    3. 创建Thread的子类对象
    4. 调用start方法开启线程
* 线程开启的方式2 (实现Runnable接口)
    1. 定义类实现Runnable接口
    2. 重写run方法
    3. 创建Runnable实现类对象
    4. 创建Thread对象,将Runnable实现类对象传入Thread构造
    5. Thread对象调用start方法开启线程
* Thread常用功能:
        String getName() 获取线程的名称
        void setName(String name) 设置线程的名称
        static void sleep(long millis) 让执行该代码的线程睡眠指定毫秒值
        static Thread currentThread() 获取正在执行此代码的线程
线程安全问题
* 出现的原因:多线程操作共享数据
* 解决线程安全问题的三种方案:
    1. 同步代码块:
        synchronized(锁对象) {
            // 有可能出现线程安全问题的代码
        }
    2. 同步方法:
        把有线程安全问题的代码提取成一个方法,在修饰符上加一个synchronized
        非静态同步方法的锁对象默认是:this
        静态同步方法的锁对象默认是:当前类.class
    3. Lock锁
        Lock lock = new ReentrantLock();
        在需要同步的代码前调用lock()获取锁
        在需要同步的代码后调用unlock()释放锁

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马