• synchronized


    synchronized互斥锁。锁定的是对象。非公平锁

    用在一个static静态方法上,锁定的是类的class,   类中有加锁和不加锁方法,同

    synchronized对象加锁是从堆里直接给对象加锁

    重入锁,类里面一个加锁方法可以调用另一个加锁方法,子类里面也可以调用父类的加锁方法

    程序里出异常,锁会被释放,不想释放就加try/catch.

    不能用字符串常量作为锁的对象 

    wait通常(99%)情况下与while一起使用。

    CountDownLatch:门闩,

    new CountDownLatch(num);//num数量

    latch.await();//等待

    latch.countDown();//数量减一

    减到0后,自动打开

    ReentrantLock:

        用于替代synchronized,但还是有区别的,lock可以尝试获取锁tryLock(),synchronized遇异常会释放锁,而它不会。

    使用ReentrantLock还可以用lockInterruptibly方法,可以对线程interrupt方法做出响应,在一个线程等待锁的过程中,可以被打断。使用场景如第二个线程要等待第一个线程释放锁才能继续,那么第二个就可以用lockInterruptibly()来中断不待。

    Lock lock = new ReentrantLock();//手工锁     ReentrantLock(true);为公平锁
    lock.lock();//锁定
    lock.unlock();//释放锁(一般在finally里释放)

    lock/condition:比wait/notifyall要更精细

    Lock lock = new ReentrantLock();
    Condition a = new lock.newCondition();
    Condition b = new lock.newCondition();
    a.await();a等待
    b.signalAll();通知b

    ThreadLocal:

    ...
  • 相关阅读:
    大数据之 Spark
    设计模式之——外观or门面模式
    架构设计
    Spring
    高并发系列之——负载均衡,web负载均衡
    高并发系列之——原子性和可见性
    高并发系列之——缓存中间件Redis
    mybatis
    JVM读书笔记
    mybatis中一对一关系映射
  • 原文地址:https://www.cnblogs.com/javage/p/9503624.html
Copyright © 2020-2023  润新知