zoukankan      html  css  js  c++  java
  • 多线程同步和异步的方式

    同步:共享资源被多个线程 调用,同步的方式有多种:(场景:卖火车票)

                                                          1 syncnizerd  关键字

                                                          2 reentrantLock 排它锁

                                                          3 volatile 关键字 修饰变量;

    异步:改变线程本身的状态 ,异步方法有多种:(场景:生产者消费者模式)

                                                         1 wait notify  ,Object 的唤醒机制 ;

                                                         2 await asign ; Condition  对象的两个方法;

                                                         3 阻塞队列BolckQueue  ,它 的底层还是Condition;

    jdk 5 之后为引入了自旋的概念,java.util.concurrent下的包 automic(automic:原子的,这些对象都有CAS操作,何谓CAS操作,CompareAndSet,计算机执行的一种同步) AutomicInteger ,就是一种自旋对象,用于同步 ;类似还有concurrentHashMap 用于完成同步;另外sleep();这个区别于wait notify() ; 它并没有释放锁;在jdk5,引入自旋锁,类似于实现唤醒等待机制,每隔几秒查询一次,而不用虚拟机去唤醒,减少不必要的开销

  • 相关阅读:
    【数据结构】优先队列和堆
    【ACM非算法部分】读入优化
    【解题报告】[动态规划]RQNOJ
    【解题报告】[动态规划]RQNOJ
    【解题报告】[动态规划]-PID69 / 过河卒
    【解题报告】[动态规划]
    【解题报告】[动态规划]RQNOJ PID2 / 开心的金明
    扫描线矩形周长的并 POJ1177
    fft模板 HDU 1402
    离线树状数组 hihocoder 1391 Countries
  • 原文地址:https://www.cnblogs.com/zgghb/p/4534037.html
Copyright © 2011-2022 走看看