zoukankan      html  css  js  c++  java
  • java提高同步锁的几点建议

    1、减少锁的持有时间,只对关键的代码块加锁,减少synchronized锁内部的无关模块;

    2、减小锁粒度,如Collections.synchronizedMap(map)返回线程安全的map会锁整张map;而ConcurrentHashMap会通过segment只对当前要查询的链表进行加锁(hashmap是table+单向链表);

    3、用读写分离锁来替换独占锁,读写分离锁是支持一个线程写数据,多个线程读取数据;如果写入较少,大量读取,非常适合使用得写分离锁,因为只有和写有关的操作才会锁数据,多个读取是不会产生锁关系的;

    4、锁分离,不要将两个无关的操作加上同一个锁;如LinkedBlockingQueue中take和put是两个不同的操作,可以定义两个锁来分别对take和put加锁;

    5、锁粗化,为了保证多线程的有效并发,锁尽量不要写在for或者while循环中,因为多次的锁开关会导致系统资源消耗;这一点和第4点并不矛盾,4中是两个不相干的操作,5是同一个操作;

  • 相关阅读:
    设计数据库步骤
    sql练习题
    多表连接查询
    数据约束
    管理并行SQL执行的进程
    关于Oracle数据库后台进程
    配置数据库驻留连接池
    为共享服务器配置Oracle数据库
    关于数据库驻留连接池
    关于专用和共享服务器进程
  • 原文地址:https://www.cnblogs.com/lmjk/p/7611251.html
Copyright © 2011-2022 走看看