美文网首页Java进阶学习
多线程并发编程

多线程并发编程

作者: Sum_Day | 来源:发表于2019-04-17 10:08 被阅读0次

    Wait/NotifyAll标准使用

    等待方线程
    1.获取对象锁
    2.判断条件
    代码写法
    sync(对象){
        while(条件){
            wait();//线程在此处等待,唤醒后继续执行后续方法doFun();
            doFun();//唤醒的后续操作
        }
    }
    
    修改方线程
    1.获取对象锁
    2.修改判断条件
    代码写法
    sync(对象){
        //修改条件后
        notifyAll();//通知所以线程继续执行
    }
    

    锁的特性/分类

    1. 公平、非公平锁
    2. 可重入锁
    3. 排他、非排他锁

    Synchronized 内部锁(虚拟机实现)

    1. 锁的是对象实例
    2. 可重入锁
    3. 非公平锁

    Lock:显示锁(代码实现)

    1. ReentrantLock:普通可重入锁(支出公平和非公平锁)
    Lock lock = new ReentrantLock(true/false)
    
    1.一定要用try/finally包裹
    
    public void work(){
        lock.lock();
        try{
            //do work
        }finally{
            lock.unlock();
        }
    }
    
    1. ReadWriteLock:读写锁 频率->读:写=>10:1
    1.读非排他锁,写排他锁
    ReadWriteLock readWriteLock = new ReentrantReadWriteLock();
    Lock readLock = readWriteLock.readLock();//读线程
    Lock writeLock = readWriteLock.writeLock();//写线程
    
    2.ReentrantReadWriteLock 高效读,写安全
    
    

    相关文章

      网友评论

        本文标题:多线程并发编程

        本文链接:https://www.haomeiwen.com/subject/qargwqtx.html