volatile关键字

  • volatile :当多个线程进行操作共享数据是, 可以保证内存中的数据可见性
  • 相较于 synchronized 是一种轻量级的同步策略
  • 注意:
  • 1.volatile 不具备 “互斥性”
    *2.volatile 不能保证变量的"原子性"
  • serialNumber=0;
  • Hashtable线程安全, 效率非常低, 多线程时,只有一个线程会进入, 进入时 会锁整个表,有时会产生复合操作时 的安全问题
  • 复合操作:"若不存在 则添加, 若存在 则删除 "

*3.ConcurrentHashMap 锁 分段机制 :

  • concurrentLevel 分为 16个segment ,并行,
  • ·ConcurrentHashMap同步容器类 是java5 增加的一个线程安全的哈希表, 对于多线程的操作, 介于 HashMap和
  • Hashtable之间, 内部采用 锁分段 机制 替代 Hashtable 的独占锁, 进而提高性能
  • · ConcurrentHashMap 、
  • ·ConcurrentSkipListMap 、
  • ·ConcurrentSkippListSet、
  • ·CopyOnWriteArrayList:写入并复制,添加操作多时, 效率低, 因为每次添加时都会进行复制, 并发迭代多时, 选择它
  • 和CopyOnWriteArraySet 。
  • 当期望许多 线程访问一个给定collection 时, ConcurrentHashMap通常优于同步的HashMap,ConcurrentSkipListMap通常优于同步的TreeMap ,
  • 打不过期望的读数和遍历远远大于列表的更新数时, CopyOnWriteArrayLIst优于同步的ArrayList

*CountDownLatch:闭锁 只有其他所有线程的运算全部完成, 当前运算才继续进行
*
` 创建线程的4种方式
*
*
/
/

  • 用于解决多线程安全问题的方式:
  • synchronized:
  • 1.同步代码块
  • 2.同步方法
  • JDK1.5以后
  • 3.同步锁
  • 注意: 是一个 显示锁,需要通过lock() 方法上锁, 必须通过unlock()方法进行释放锁
  • while (product >= 1) {//为了避免虚假唤醒问题, 应该总是使用在循环中

*Lock

  • Condition 控制线程通信
  • ·Condition 接口描述了可能 会与锁有关联 的条件变量 , 这些变量在用法上 与使用 Object.wait 访问的隐式监视器类似,
  •  但提供了更强大的功能, 单个Lock 可能与多个Conditon 对象管理
    
  • ·在Condition 对象中, 与wait、notify和notifyAl方法对应的分别是await、signal 和signalAll
  • ·Condition 实例实质上被绑定在一个锁上, 要为特定lock实例获得Condition 实例, 使用newCondition()方法
    */
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值