java并发编程
文章平均质量分 92
从底层原理分析Java并发编程,体验并发编程的艺术
不能说的秘密go
求知若饥,虚心若愚
展开
-
JVM 调优经验总结
JVM调优记原创 2023-02-07 09:51:20 · 579 阅读 · 1 评论 -
最终一致分布式事务方案解析
在微服务架构中,随着服务的逐步拆分,数据库私有已经成为共识,这也导致所面临的分布式事务问题成为微服务落地过程中一个非常难以逾越的障碍,但是目前尚没有一个完整通用的解决方案。为了保证分布式事务一致性目前业内成熟的解决方案之一为最终一致分布式事务方案原创 2023-02-02 12:15:50 · 466 阅读 · 0 评论 -
高性能的异步处理框架Disruptor(五)——Disruptor2.0的应用
前文讲了那么多理论,原理。现在通过实际的代码,来看看Disruptor2.0的几种实际应用代码。Event事件定义:/** * Event,RingBuffer的数据 * @author wangxi * @date 2019-10-16 16:31 */@Slf4jpublic class DisruptorEvent implements Serializable { ...原创 2019-10-18 15:33:21 · 1084 阅读 · 0 评论 -
高性能的异步处理框架Disruptor(四)——Disruptor2.0的优化
现在读者应该能理解如下运行流程图了。如何还看不懂,则需要回顾上篇文章 Disruptor消费者的依赖关系Disruptor2.0主要变化有 3 点:更贴切的命名;把 producer barrier(生产者屏障)整合进了 ring buffer;将 Disruptor Wizard 加入了主代码库。对于上图的实现方案,在新版本的结构图大概如下:可以看到新版本更加简约,Pro...原创 2019-10-14 14:29:14 · 738 阅读 · 0 评论 -
<转> JAVA CAS原理深度分析
<转> JAVA CAS原理深度分析转载 2016-02-28 11:41:51 · 2246 阅读 · 0 评论 -
volatile关键字解析(jdk1.5之后)
学习过并发编程的同学应该对volatile关键字并不陌生。它也是用来保证多线程读写数据时保证数据的一致性,但它不如synchronized强大。synchronized是在执行代码块或是方法体时中隐式的加锁而禁止其他线程来访问。而volatile仅仅是对某个变量的修改及时的可见于其他的线程原创 2016-05-02 09:44:19 · 5713 阅读 · 3 评论 -
生产者/消费者模式(阻塞队列) 一个经典的并发模型
生产消费者模式也是关于线程阻塞的问题,生产消费者模式是通过观察者模式来实现的。之前在编写一个通讯软件的时候用到了这种模式,通过维护一个BlockingQueue来完成Socket的消息发送原创 2016-05-30 22:57:01 · 14342 阅读 · 1 评论 -
Java中的锁-Lock接口解析
提到java中的锁,相信大家都知道它是用来控制多个线程访问共享资源的方式(即锁能防止多个线程同时访问空享资源而出现线程安全问题)。在实践过程中使用最多的也最常见的锁就是 synchronized 在jdk1.5之前也仅仅有这一种锁而已。在jdk1.5之后,并发包中新增了Lock接口原创 2016-07-27 23:51:13 · 20888 阅读 · 2 评论 -
如何使用Lock接口来实现等待/通知机制
关于java中的等待/通知机制(http://blog.csdn.net/canot/article/details/50879963)在之前的解决方案中都是基于synchronized以及Object类的方法wait(),wait(long timeout),notify()以及notifyAll()方法来实现。现在我们了解了java中的另一种锁Lock之后我们尝试能不能用Lock代替synchr原创 2016-08-09 00:15:29 · 2291 阅读 · 0 评论 -
Java中高效的并发容器----ConcurrentHashMap
并发编程大师Doug Lea为JDK提供了一些非常优秀的并发容器和框架,让我们通过一个较简单的类ConcurrentHashMap来见识大师操刀编写的并发容器和框架的精妙。HashMap的不足HashMap的最大的问题就是线程不安全,虽然Map接口提供了一个线程安全的类HashTable,但HashTable类效率非常低下。于是,ConcurrentHashMap便闪亮登场。原创 2016-08-24 23:30:18 · 2817 阅读 · 0 评论 -
Java中的阻塞队列
阻塞队列常用于生产者和消费者的场景,生产者是往队列里添加元素的线程,消费者是从队列里拿元素的线程。阻塞队列就是生产者存放元素的容器,而消费者也只从容器里拿元素。原创 2016-08-27 21:35:49 · 1777 阅读 · 0 评论 -
完美解决WebSocket 服务器 The WebSocket session [0] has been closed and no method...异常信息
最近项目需要web客户端与服务器保持长链接的场景并需要服务器向所有链接的客户端推送消息,于是自然使用了WebSocket技术,自然要考虑到服务器于多个客户端线程安全的问题。于是乎,想当然的在WebSocket服务器端通过一个线程安全的队列来保持所有客户端原创 2016-09-10 15:53:42 · 47945 阅读 · 23 评论 -
理解java线程的中断(interrupt)
一个线程在未正常结束之前, 被强制终止是很危险的事情. 因为它可能带来完全预料不到的严重后果原创 2016-04-07 17:39:33 · 41636 阅读 · 16 评论 -
自己实现一个简单的支持并发的Web服务器
编写一个支持并发访问的Web服务器来处理一些简单的HTTP请求/响应原创 2016-03-16 17:31:23 · 3443 阅读 · 0 评论 -
java线程池---编写自己的线程池
java线程池---编写自己的线程池原创 2016-03-16 12:25:57 · 13426 阅读 · 13 评论 -
java线程之间的通信(等待/通知机制)
线程开始运行,拥有自己的栈空间,就如同一个脚本一样,按照代码一步步的执行直到终止。但是,每个运行中的线程,如果仅仅是孤立地运行,那么没有太大的价值,但如果多个线程能够相互配合完成工作,这将会带来巨大的价值。原创 2016-03-13 20:33:43 · 7111 阅读 · 0 评论 -
使用并发编程的挑战
编程中使用多线程的目的是为了让程序执行的更快,效率更高。所以很多人想当然的认为多线程的执行效率一定比单线程的高。但在进行并发编程时,会发现试图使用多线程来提高程序的整体运行效率,会面临很多挑战。原创 2016-02-27 21:14:32 · 1400 阅读 · 0 评论