搜索
首页JavaJava基础一起和Netty学习Java锁的使用

java基础教程栏目介绍如何和Netty学习Java锁

一起和Netty学习Java锁的使用

推荐(免费):java基础教程

1 锁的对象和范围

  • 缩小粒度

2 锁的对象本身大小

  • 减少空间占用

    Atomic long V.S long
    前者是个对象,包含对象头(object header)以保存hashcode、lock 等信息,64 位系统下占16字节,64位系统下:
  • volatile long= 8 bytes
  • AtomicLong = 8 bytes (volatile long) + 16bytes (对象头) + 8 bytes (引用) = 32 bytes
    至少节约24字节!

所以 Atomic* objects =》 Volatile primary type + Static Atomic*FieldUpdater

3 锁的速度

提高并发性

LongCounter

记录内存分配字节数等功能用到的。
高并发下: java.util.concurrent.atomic.AtomicLong => java.util.concurrent.atomic.LongAdder

结论:及时衡量、使用JDK最新的功能

根据不同情况,选择不同的并发包实现

JDK< 1.8考虑ConcurrentHashMapV8 ( ConcurrentHashMap在jDK8中的版本)

4 不同场景选择不同的并发类

因需而变

  • 关闭和等待关闭事件执行器( Event Executor):
    Object.wait/ notify =》 CountDownLatch

  • Nio Event loop中负责存储task的Queue
    Jdk’s LinkedBlockingQueue (MPMC,多生产者多消费者) -> jctools’ MPSC
    io.netty.util.internal.PlatformDependent.Mpsc#newMpscQueue(int):

    5 锁的价值

    能不用则不用
    Netty应用场景下:局部串行+整体并行>- -个队列+多个线程模式:
    降低用户开发难度、逻辑简单、提升处理性能
    避免锁带来的上下文切换和并发保护等额外开销

    避免用锁:用ThreadLocal来避免资源争用,例如Netty轻量级的线程池实现

    以上是一起和Netty学习Java锁的使用的详细内容。更多信息请关注PHP中文网其他相关文章!

声明
本文转载于:CSDN。如有侵权,请联系admin@php.cn删除

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
1 个月前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
1 个月前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
1 个月前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.聊天命令以及如何使用它们
1 个月前By尊渡假赌尊渡假赌尊渡假赌

热工具

Atom编辑器mac版下载

Atom编辑器mac版下载

最流行的的开源编辑器

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )专业的PHP集成开发工具

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

WebStorm Mac版

WebStorm Mac版

好用的JavaScript开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)