• Java学习----JUC包和信号量


    今日学习内容总结如下:

    JUC

    JUC是java.util.concurrent包的简称,在Java5.0添加,目的就是为了更好的支持高并发任务。让开发者进行多线程编程时减少竞争条件和死锁的问题!

    1、同步辅助类
    1)CountDownLatch闭锁是一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待
    2)CyclicBarrier栅栏之所以叫barrier,是因为是一个同步辅助类,允许一组线程互相等待,直到到达某个公共屏障点 ,并且在释放等待线程后可以重用。
    3)Semaphore信号量是一个计数信号量,它的本质是一个共享锁。信号量维护了一个信号量许可集。线程可以通过调用acquire()来获取信号量的许可;当信号量中有可用的许可时,线程能获取该许可;否则线程必须等待,直到有可用的许可为止。 线程可以通过release()来释放它所持有的信号量许可。

    2,executor(执行者):是Java里面线程池的顶级接口,但它只是一个执行线程的工具,真正的线程池接口是ExecutorService,里面包含的类有:

    1)ScheduledExecutorService 解决那些需要任务重复执行的问题

    2)ScheduledThreadPoolExecutor 周期性任务调度的类实现

    3,atomic(原子性包):是JDK提供的一组原子操作类,

    包含有AtomicBoolean、AtomicInteger、AtomicIntegerArray等原子变量类,他们的实现原理大多是持有它们各自的对应的类型变量value,而且被volatile关键字修饰了。这样来保证每次一个线程要使用它都会拿到最新的值。

    4,locks(锁包):是JDK提供的锁机制,相比synchronized关键字来进行同步锁,功能更加强大,它为锁提供了一个框架,该框架允许更灵活地使用锁包含的实现类有:

    1)ReentrantLock 它是独占锁,是指只能被独自占领,即同一个时间点只能被一个线程锁获取到的锁。

    2)ReentrantReadWriteLock 它包括子类ReadLock和WriteLock。ReadLock是共享

  • 相关阅读:
    常见安全设备介绍
    【机器学习-周志华】学习笔记-第十三章
    前端1+x考证:上篇
    Spark Streaming(一)
    GLAMD: Global and Local Attention Mask Distillation for Object Detectors
    Ubuntu20.04 安装微信 【优麒麟的镜像源方式安装】
    【51单片机】DS18B20(江科大)
    playwright 脚本调试
    conda 实践
    pytorch报错大全
  • 原文地址:https://blog.csdn.net/hanxuya/article/details/126753014