并发编程
感性企鹅
数据驱动决策
展开
-
并发编程-一个简单的例子阐述volatile的保持线程间内存可见性作用(volatile)
实践代码参考:https://gitee.com/wangtonggui/java_demo.git的keyword-demo使用volatile,线程可以停止不使用,线程不可以停止说明volatile可以进行变量的线程间同步评价使用一个例子可以方便的说明问题。...原创 2020-04-29 12:03:15 · 224 阅读 · 0 评论 -
并发编程-复现一个简单的并发场景
实践过程代码参考:https://gitee.com/wangtonggui/java_demo.git的ParallelProblem模拟场景:黄牛抢票把count看做是票把Thread看做是黄牛黄牛不断抢票,但是多次尝试之后,出现了两个黄牛抢到一张票的场景评价java中如果没有进行任何线程安全同步的情况下,公有资源的访问必然会出现线程安全的问题。...原创 2020-04-28 12:07:03 · 371 阅读 · 0 评论 -
并发编程-简易秒杀实践(分布式锁+redis+springboot+redisson)
背景分布式锁的核心是把并发操作强行串行化,在面试过程中非常常见,在高并发场景的编程下也非常常见。本wiki将进行简易的编程实践。注:代码没有在线上工程中实际应用,仅供学习参考实践过程搭建环境使用docker搭建redis环境sudo docker run --name redis -p 6379:6379 -d redisspring boot实现一个简易的web服务(seckil...原创 2020-04-27 19:24:38 · 410 阅读 · 0 评论 -
并发编程-juc-semaphore信号量实践
背景在进行限流与熔断的过程中,java信号量起到了很大的作用,本wiki将java的信号量做了最基础的实战。实践过程参考代码:https://gitee.com/wangtonggui/java_demo.git创建信号量,公平模式就是先到先得,抢占式就是看运气信号量阻塞-1,这个是线程安全的当信号量的可用许可证为0的时候,acquire就会阻塞release操作就是+1操作,...原创 2020-04-20 19:56:49 · 233 阅读 · 0 评论 -
并发编程-java并发包中的对列走读(queue)
背景在并发编程中,经常会使用到对列(queue)在进行线程间的数据传递,本博文将从应用角度来阐述一下jdk中各种对列。注:由于相关的队列类种类较多,本博客暂时不进行相关实战,实战将另起博文阐述全景概况最底层接口类Queue接口类提供最基础的接口规范,走读一下。add 增加一个元索 如果队列已满,则抛出一个IIIegaISlab...原创 2019-10-11 16:51:56 · 276 阅读 · 0 评论 -
并发编程-ReentrantLock类走读
背景并发编程中需要使用锁在进行线程间同步和禁止同时访问共有资源的。下面走读下juc包中的ReentrantLock血缘关系ReentrantLock血缘Lock接口类,属于jdk中juc包,锁的基类(不包括synchronize关键字)ReentrantLock,可重入锁,实现了LockLock的其他派生类血缘可以看到,在juc的包中,除了读写锁,就没其他的锁实现Lock了,...原创 2019-10-07 23:11:48 · 174 阅读 · 0 评论 -
并发编程-java线程间数据传递(类似go的channel+Condition)
文章目录背景原理实战背景go语言的channel+协程,非常有助于它的并发实现,现在我们来用java实战模拟一下,顺便提供一种线程间传递数据的手段,仅供参考。原理使用java的Condition+lock进行线程间的消息通知,使用Object进行数据传递(本博客只用一个对象来进行数据传递,初衷是为了简单易懂)。Condition是java1.5添加的线程间同步类,在juc包中,需要配合lo...原创 2019-09-30 11:19:48 · 518 阅读 · 0 评论 -
并发编程-java线程池走读(jdk的juc包中自有线程池之ThreadPoolExecutor)
文章目录背景线程池源码走读结构总览核心实现构造过程执行方法submit过程线程池关闭过程 shutdown评价背景juc是jdk的并发包,最核心的有三个类,本系列博客将逐一进行阐述,最后配上实战。线程池源码走读结构总览诞生于jdk1.5,下面看一下类图。类的实现以两个“执行器”接口类为导向。这里只看一下ThreadPoolExecutor的实现:核心实现构造过程参数如下:...原创 2019-09-28 17:01:18 · 292 阅读 · 0 评论 -
并发编程-springboot的tomcat和netty性能初步对比
背景spring boot2.0以后,web容器类型增加了webflux(使用了netty nio框架)。都说nio快,而且netty的nio更快(tomcat 8以后也引入了nio,但性能并不是最优)。现在来通过简单的helloworld测试一下性能对比环境cpu:i7 7700内存:32G 2400hz硬盘:ssd 读取速度 3.2G,写入速度2.4G(西数n750)代码实现非...原创 2019-09-09 21:02:48 · 9196 阅读 · 4 评论 -
并发编程-并发下redis连接数监测
背景用go语言写的服务,之前在并发过后,redis连接很久没有释放,下面来做下监测的过程。监测命名netstat实战netstat -nat | grep 6379可以检测端口的情况可以看到,现在客户端没有启动端口。下面我们打开rdm客户端(mac上的ui客户端)看看效果。最后面的状态,说明已经建立连接。常用参数以下是他人总结:-a (all)显示所有选项,netst...原创 2019-08-21 12:30:23 · 573 阅读 · 0 评论 -
并发编程-编程实战(Executors+Callable+Thread.sleep+ExecutorService)
package com.mine.concurrent;import java.util.ArrayList;import java.util.List;import java.util.Random;import java.util.concurrent.*;/** * 并发编程实战1: * Executors + Callable + Thread.sleep */pub...原创 2019-06-30 14:56:17 · 221 阅读 · 0 评论