前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >每日一水java并发的索引

每日一水java并发的索引

原创
作者头像
李子健
修改2022-03-23 23:04:22
2580
修改2022-03-23 23:04:22
举报
文章被收录于专栏:每日一善每日一善

java高并发详解

1 JMH

@Benchmark 基准测试

@Warmup预热,设置批次

@Measurement度量,设置批次

@BenchMode运行模式

代码语言:txt
复制
* AverageTime平均响应时间
* Throughput方法吞吐量
* SampleTime抽样统计
* SingleShotTime冷测试OutputTimeUnit 统计结果输出的时间单位
@Thread设置线程数量
@Group设置线程组的名称
@GroupThread设置线程组线程数量
@Scope
    Benchmark 线程共享
    Thread 每个基准方法都是独立的一个线程运行
    Group 线程组共享
@Param 配置参数
@Setup以及TearDown
    调用前和调用后
    @Setup(level)
        itrial每个基准测试方法的所有批次前后被执行
        interation每个批次前后被调用
        invocation每一次批次度量过程中,每次方法调用都会执行
@CompilerControl禁止jvm运行时优化和编译
class Blackhole黑洞
@OperationsPreinvocation避免循环展开
@Fork不同的进程中运行
JMH的Profilestack 线程栈信息gc 垃圾回收cl 类加载comp jit编译分析
addProfiler(xxx.class)
代码语言:txt
复制
final Options options = new OptionsBuilder().include(JMHSimple1.class.getSimpleName())
                .forks(1)
                .measurementIterations(10)
                .warmupIterations(10)
                .build();
        new Runner(options).run();

2 并发包的原子类型

原理

atomicInteger

  • 原理compareAndSwapInt(this,valueOffset,expect,update)final CountDownLatch latch = new CountDownLatch(3); await(10, 单位)可以设置超时CyclicBarrier 由Lock和Condition实现可以重复使用 CyclicBarrier(int, runnable )使用时需要注意先写break的阻塞 不同exchanger.exchange("from a");Semaphore 信号量semaphore.acquire(); semaphore.release();Phaserphaser.register(); phaser.arrive(); phaser.arriveAndDeregister();分区减一 phaser.arriveAndAwaitAdvance();Lock & ReentrantLock方法
  • while(true)的方式 atomicBoolean:可以考虑实现try-lock atomicLong atomicReference atomicStampedReference atomicArray atomicFieldUpdater sun.misc.Unsafe的应用3 并发包之工具详解CountDownLatch 基于AQS实现
  • CountDownLatch不可重复使用,CountDownLatch是lock condition
  • CyclicBarrier是AQS Exchanger一对线程的数据交换
  • 可以有多个phase阶段,每个阶段都是有编号的
  • 动态分片,可以多次被修改
  • synchroinized关键字有优化
  • 死锁问题 condition
  • 基于lock的条件通知
  • await, signal StampedLock
  • 乐观锁,采用一个long标识
  • 不可重入的锁 guava
  • monitor 监控
  • RateLimiter 令牌桶4 并发容器链表
  • arraylist
  • linkedlist
  • skiplist 队列
  • ArrayBlockingQueue
  • PriorityBlockingQueue 数组实现,无边界
  • LinkedBlockingQueue 最大整数最大值
  • DelayQueue 延迟队列
  • SynchroinizedQueue 线程间同步数据
  • LinkedBlockedDeque 双写阻塞队列
  • LinkedTransferQueue 无界队列 ConcurrentQueue并发队列
  • ConcurrentQueue
  • ConcurrentDeque ConcurrentHashMap并发容器 CopyOnWrite写时拷贝
  • CopyOnWriteArrayList
  • CopyOnWriteArraySet 无锁
  • voliate
  • atom5 executorServiceExecutor和ExecutorService
  • 线程池
  • 最大池数
  • 池空闲时间
  • keepAliveTime
  • workQueue
  • ThreadFactory
  • RejectedExecutionHandler Futrue和Callback
  • Runable接口
  • Callable接口 Guava的future,注册和等待 Fork/Join 分而治之计算
  • RecursiveTask
  • RecursiveAction CompletionService
  • 完成异步操作后放入阻塞队列
  • poll, take()阻塞直到获取结果
代码语言:txt
复制
ExecutorService executorService = Executors.newCachedThreadPool();
CompletionService<Integer> completionService = new ExecutorCompletionService<>(executorService);

CompletableFuture

  • 同步调用
  • 任务异步运行
  • 异步任务链
  • 合并多个future
  • 多个future的并行计算
  • 错误处理6 java streamStream提供的功能
  • 基本使用
  • filter
  • sorted
  • map
  • Collector
  • 创建
  • of
  • stream.Builder
  • stream.empty
  • stream.generate
  • NumberStream
  • NumberStream.range(1,10)
  • Arrays.Stream
  • list.Stream
  • Files.Stream
  • Intermediate 流关闭,创建一个全新的stream
  • distinct
  • filter
  • limit
  • map
  • skip
  • peek
  • sorted
  • faltMap
  • Terminal 终结流水线的继续操作
  • match
  • find
  • foreach
  • count
  • max
  • min
  • collect
  • reduce
  • NumbericStream
  • IntStream DoubleStream LongStream Collector在stream
  • 作用
  • reduce 单一处理
  • group 分组
  • partion 分区
  • 功能
  • averaging
  • collectingAndThen
  • counting
  • mapping
  • joining
  • summing
  • summarizing
  • 输出到其他容器
  • partioning
  • groupingBy Parallel stream
  • 并行流 parrell
  • splite数据切分

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • java高并发详解
    • 1 JMH
      • 2 并发包的原子类型
      相关产品与服务
      容器服务
      腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档