随笔分类 -  并发

讲解并发底层技术原理
摘要:Redis实现分布式锁的正确使用方式(java版本) 本文使用第三方开源组件Jedis实现Redis客户端,且只考虑Redis服务端单机部署的场景。 本篇博客将介绍第二种方式,基于Redis实现分布式锁。虽然网上已经有各种介绍Redis分布式锁实现的博客,然而他们的实现却有着各种各样的问题,为了避免 阅读全文
posted @ 2019-04-10 09:08 星晴-joe 阅读(3401) 评论(0) 推荐(0)
摘要:具体CAS操作 上一篇讲述了CAS机制,这篇讲解CAS具体操作. 什么是悲观锁、乐观锁?在java语言里,总有一些名词看语义跟本不明白是啥玩意儿,也就总有部分面试官拿着这样的词来忽悠面试者,以此来找优越感,其实理解清楚了,这些词也就唬不住人了。 synchronized是悲观锁,这种线程一旦得到锁, 阅读全文
posted @ 2019-03-27 12:03 星晴-joe 阅读(2302) 评论(0) 推荐(4)
摘要:(白话理解)CAS机制 通过一段对话我们来了解cas用意 示例程序:启动两个线程,每个线程中让静态变量count循环累加100次。 最终输出的count结果是什么呢?一定会是200吗? 加了同步锁之后,count自增的操作变成了原子性操作,所以最终的输出一定是count=200,代码实现了线程安全。 阅读全文
posted @ 2019-03-27 10:41 星晴-joe 阅读(810) 评论(2) 推荐(3)
摘要:1.voliate简介 在上一篇文章中我们深入理解了java关键字synchronized,我们知道在java中还有一大神器就是关键volatile,可以说是和synchronized各领风骚,其中奥妙,我们来共同探讨下. 通过上一篇的文章我们了解到synchronized是阻塞同步的,在线程竞争激 阅读全文
posted @ 2018-07-05 22:15 星晴-joe 阅读(1380) 评论(0) 推荐(1)
摘要:1.sychronized简介 在学习知识之前,我们先来看一个现象 开启了10个线程,每个线程都累加了1000000次,如果结果正确的话自然而然总数就应该是10 * 1000000 = 10000000。可就运行多次结果都不是这个数,而且每次运行结果都不一样。这是为什么了?有什么解决方案了?这就是我 阅读全文
posted @ 2018-06-17 17:32 星晴-joe 阅读(734) 评论(0) 推荐(1)
摘要:1. JMM的介绍 在上一篇文章中总结了线程的状态转换和一些基本操作,对多线程已经有一点基本的认识了,如果多线程编程只有这么简单,那我们就不必费劲周折的去学习它了。在多线程中稍微不注意就会出现线程安全问题,那么什么是线程安全问题?我的认识是,在多线程下代码执行的结果与预期正确的结果不一致,该代码就是 阅读全文
posted @ 2018-06-17 12:47 星晴-joe 阅读(318) 评论(0) 推荐(1)
摘要:在上一篇文章中并发编程的优缺点谈到了为什么花功夫去学习并发编程的技术,也就是说我们必须了解到并发编程的优缺点,我们在什么情况下可以去考虑开启多个线程去实现我们的业务,当然使用多线程我们应该着重注意一些什么,在上一篇文章中会有一些讨论。那么,说了这么多,无论是针对面试还是实际工作中作为一名软件开发人员 阅读全文
posted @ 2018-06-17 01:16 星晴-joe 阅读(653) 评论(0) 推荐(1)
摘要:1.读写锁的介绍 在并发场景中用于解决线程安全的问题,我们几乎会提供高频率的使用到独占式锁,通常使用java提供的关键字synchronized(关于synchronized可以看这篇文章)或者concurrents包中实现了Lock接口的ReetrantLock.它们都是独占式获取锁,也就是在同一 阅读全文
posted @ 2018-06-16 15:03 星晴-joe 阅读(224) 评论(0) 推荐(1)
摘要:5.ReentrantLock的介绍 ReenTrantLock重入锁,是实现Lock接口的一个类,也是在实际编程中使用频率很高的一个锁,支持重入性,表示能够对共享资源能够重复加锁,即当前线程获取该锁再次获取不会被阻塞.在java关键字synchronized隐式支持重入性(关于synchro.那么 阅读全文
posted @ 2018-06-15 16:53 星晴-joe 阅读(272) 评论(0) 推荐(1)
摘要:3.并发相关的概念 3.1同步和异步 同步和异步通常用来形容一次方法调用。同步方法调用一开始,调用者必须等待被调用的方法结束后,调用者后面的代码才能执行。而异步调用,指的是,调用者不用管被调用方法是否完成,都会继续执行后面的代码,当被调用的方法完成后会通知调用者。比如,在超时购物,如果一件物品没了, 阅读全文
posted @ 2018-06-15 15:10 星晴-joe 阅读(162) 评论(0) 推荐(1)
摘要:1.并发编程的优点: 面对复杂业务模型,并行程序比串行程序更适应业务需求,而并发编程更吻合这种业务拆分,正是因为这些优点,使得多线程技术能够得到重视,也是一名CS学习者应该啊掌握的; 充分利用多喝CPU的计算能力 方便进行业务拆分,提升应用性能 2.并发编程的缺点: 多线程技术有这么多的好处,难道就 阅读全文
posted @ 2018-06-15 13:29 星晴-joe 阅读(339) 评论(0) 推荐(1)
摘要: 阅读全文
posted @ 2018-06-14 19:00 星晴-joe 阅读(646) 评论(1) 推荐(1)