高并发多线程
多多洛码代码
学生
展开
-
多线程之Disruptor高性能内存队列
多线程之Disruptor高性能内存队列消息队列容器Disruptor的特点Disruptor是数组实现的无锁,高并发,使用环形Buffer,直接覆盖(不用清除)旧的数据,降低GC频率实现了基于事件的生产者消费者模式(观察者模式)RingBuffer环形队列RingBuffer的序号,指向下一个可用的元素采用数组实现,没有首尾指针对比ConcurrentLinkedQueue,用数组实现的速度更快原素定位假如长度为8,当添加到第12个元素的时候在哪个序号上呢?用12%8决定原创 2020-08-22 15:22:31 · 505 阅读 · 0 评论 -
高并发多线程之ThreadLocal
ThreadLocal提供了线程内存储变量的能力,这些变量不同之处在于每一个线程读取的变量是对应的互相独立的。通过get和set方法就可以得到当前线程对应的值。ThreadLocal的源码ThreadLocalMap getMap(Thread t) { return t.threadLocals;}```javapublic void set(T value) { Thread t = Thread.currentThread(); ThreadLocalMap原创 2020-08-17 17:17:23 · 235 阅读 · 0 评论 -
多线程之JMH测试
介绍JMH 是 Java Microbenchmark Harness 的缩写。中文意思大致是 “JAVA 微基准测试套件”优势可重复性:可进行重复性的测试,这样做有利于比较每次的测试结果,得到性能结果的长期变化趋势,为系统调优和上线前的容量规划做参考。可观测性:通过全方位的监控(包括测试开始到结束,执行机、服务器、数据库),及时了解和分析测试过程发生了什么。可展示性:相关人员可以直观明了的了解测试结果(web界面、仪表盘、折线图树状图等形式)。真实性:测试的结果反映了客户体验原创 2020-08-12 19:12:49 · 676 阅读 · 0 评论 -
多线程之ForkJoinPool的使用
多线程之ForkJoinPool无返回结果用法任务定义继承RecursiveAction类,实现compute方法任务分片方式// 创建新的任务AddTask subTask1 = new AddTask(start, middle);AddTask subTask2 = new AddTask(middle, end);// 进行执行subTask1.fork();subTask2.fork();RecursiveAction extends ForkJoinTask<V原创 2020-08-11 23:00:27 · 309 阅读 · 0 评论 -
高并发多线程之线程
有关概念程序:指令的集合,例如我们写的java代码所构成的一个文件进程:正在执行的一个程序线程:进程中的一个“单一的连续控制流程”,一个进程中至少有一个线程线程的状态新生状态,刚刚创建就绪状态,准备执行,表示start()之后添加到就绪队列,所有线程同>时抢占cpu,notify、notifyAll、yield后都会进入这个状态运行状态死亡状态,正常结束、人为中断、出现异常结束。阻塞状态,执行了sleep或者等待I/O资源,在改状态下,不能进入就绪队列,除非阻塞原因解除,会再原创 2020-08-03 21:07:47 · 143 阅读 · 0 评论 -
高并发多线程之线程池知识点
常用线程池分类ThreadPoolExecutor例如: newFixedThreadPool、newSingleThreadExecutor、newCachedThreadPool2. ScheduledThreadPoolExecutor可调度线程池例如:newScheduledThreadPool3. ForkJoinPool 分而治线程池例如newWorkStealingPool线程池生命周期Running 能接受提交的任务,并处理阻塞队列中的任务;shutdown 关原创 2020-08-03 21:06:45 · 489 阅读 · 0 评论