java无锁化编程一:目录

时间:2021-07-27 22:00:56

假设我们用netty做服务,当接受到网络传输的码流,我们通过某种手段将这种传输数据解析成了熟悉的pojo,那这些pojo该如何进一步处理?

比如游戏中的抢购、场景业务等,对处理那种高并发的业务场景,如何保证数据的一致性?

 

1.悲观锁和乐观锁

悲观锁和乐观锁这种,大家立即会联想到数据库读写。但是我们仍然可以尝试的在获取对象锁上理解。

没错,锁技术很慢。

 

2.读写分离,读写锁

 

3.MVCC,我曾尝试着用java来实现类似数据库的多版本并发控制,后面具体详说。

 

4.actor模型的引入

java版本的actor,共享线程池,使用cas,实现同一时刻只有单线程访问,同时更高的提升了线程池的利用率。

 

5.无锁化编程思想:像闪电一样的disruptor

这种ringbuffer环形数组解决了队列的头尾指针和大小变量等冲突,而唯一需要关心的,就是多个生产者写入ringBuffer的场景,

这个要仔细说。