zoukankan      html  css  js  c++  java
  • Struts整合spring 规格严格

    http://blog.csdn.net/hqshaozhu/article/details/7562246
    http://san-yun.iteye.com/blog/1430028

     http://www.blogjava.net/hijackwust/archive/2007/08/21/138464.html

    http://www.realqi.cn/tag/scan/

    http://blog.csdn.net/applebomb/article/details/1074557
    http://blog.csdn.net/inthirties/article/details/4491973
     
    ConcurrentHashMap应用注意事项
    1、public V get(Object key)不涉及到锁,也就是说获得对象时没有使用锁;
    2、keySet().iterator()及keys(),获取的Iterator、Enumeration变量是单线程访问安全的,多线程访问时要么生成多个Iterator、Enumeration(通过调用相应的获取方法),要么以ConcurrentHashMap变量为锁进行同步(synchronized该变量);ConcurrentHashMap变量是多线程访问安全的,尽管是多线程访问,多数情况下应该没有锁争用;
    3、put、remove方法要使用锁,但并不一定有锁争用,原因在于ConcurrentHashMap将缓存的变量分到多个Segment,每个Segment上有一个锁,只要多个线程访问的不是一个Segment就没有锁争用,就没有堵塞,各线程用各自的锁,ConcurrentHashMap缺省情况下生成16个Segment,也就是允许16个线程并发的更新而尽量没有锁争用;
    4、Iterator、Enumeration获得的对象,不一定是和其它更新线程同步,获得的对象可能是更新前的对象,ConcurrentHashMap允许一边更新、一边遍历,未遍历到的key一般能放映value更新;
    5、有些情况下这种不一致是允许的,如果需要最大的性能、吞吐量,则正好使用ConcurrentHashMap

    目前只想到能用于缓存无关紧要的信息,对于读写 都须同步的操作,竟然还要加synchronized,悲剧的线程安全

     
       
  • 相关阅读:
    8.02_python_lx_day14
    8.02_python_lx_day13<2>
    8.02_python_lx_day13<1>
    7.30_python_lx_day20
    7.29_python_lx_da19
    7.29_python_lx_day12
    Docker镜像
    Docker学习Ⅱ
    Docker学习Ⅰ
    2-3树的插入和删除原理
  • 原文地址:https://www.cnblogs.com/diyunpeng/p/2737000.html
Copyright © 2011-2022 走看看