JAVA并发
文章平均质量分 80
早就戒了
这个作者很懒,什么都没留下…
展开
-
JAVA并发编程(八)——Callable和Future
Future模式在多线程开发中,Future模式是经常使用到的一种设计模式,其核心思想就是异步调用。当我们要调用一个函数方法fun时,fun的执行很慢,如果我们不需要着急知道fun的结果时,我们可以让调用者直接返回去做其他的任务,让fun在后台继续执行。当我们需要用到fun的结果时再去取。Future模式就好像我们在网上购物,我们只要负责下单就可以做自己的事情,而不需要傻傻的等待商品到来。我们只需要原创 2017-10-19 09:44:08 · 366 阅读 · 0 评论 -
JAVA并发编程(一)—基本概念和术语
JAVA并发编程(一)—基本概念和术语 在学习java并发编程时候之前,我们必须要搞清楚一些基本概念和术语。 1.并发和并行的区别 2.线程和进程的区别 3.阻塞和非阻塞 4.死锁、饥饿 5.原子性、可见性 6.指令重排 1.同步和异步的区别并发和并行是一个非常容易混淆的概念,也是面试中面试官经常问到的问题,虽然两者都可以表示多个任务一块执行,但是侧重点原创 2017-10-12 15:42:41 · 727 阅读 · 0 评论 -
JAVA并发编程(二)——同步控制(上)
在并发编程中,同步控制是最重要也是最需要保障的。想象这样的场景:你去银行取了100万,余额理应还有900万,但是ATM机却告诉你,余额还剩1000万,那这多出来的100万哪里来的呢?这里我将介绍JAVA中控制线程同步最基本的方法。 同步控制基本方法Synchronized和他的伙伴ReentrantLock和他的女朋友们Synchronized、wait()、notify()Synchronized原创 2017-10-12 16:37:36 · 307 阅读 · 0 评论 -
JAVA并发编程(五)——性能优化(上)
在程序中加入锁是非常消耗性能的,对锁的申请和释放需要消耗大量的资源,所以我们需要对上锁的程序进行优化,在保证程序正确运行的前提下提高性能。 我们能做的 减小锁的占有时间 减小锁的粒度 用分离锁代替独占锁 锁粗化 JVM能做的 锁偏向 轻量级锁 自旋锁 锁消除 ThreadLocal 我们能做的 减小锁的占有时间 我们对比一下下面两个例子: public syn原创 2017-10-13 20:33:49 · 496 阅读 · 1 评论 -
JAVA并发编程(四)——线程状态与中断
本节主要来讲一讲线程的状态以及它的中断,就好像描述一个美女的外貌,是性感的,有气质的,还是可爱的(不是很恰当的比喻)。 线程的各种状态以及转换 New Runnable Waiting TimedWaiting Ready Blocking Terminated 线程的中断以及处理 interrupt、 interrupted、isinterrupted(); InterruptE原创 2017-10-13 16:59:58 · 271 阅读 · 0 评论 -
JAVA并发编程(六)——性能优化(下)
对于高并发的环境下,无论使用什么加锁策略,程序的性能始终不能与无锁的程序相媲美,那么是否存在一种不使用加锁也能实现各个线程之间同步的策略呢?答案当然是肯定的。那就是比较交换(CAS)策略。 CAS AtomicInteger、AtomicLong Unsafe AtomicReference、AtomicStampedReference CASCAS是比较交还的英文缩写,和使用锁相比,使用CAS会使原创 2017-10-14 10:39:05 · 366 阅读 · 0 评论 -
JAVA并发编程(七)——线程池
什么是线程池?为了避免系统频繁的创建和销毁线程,我们可以让创建好的线程重复使用,类似与数据库开发中经常接触到的数据库连接池。在线程池中,会有几个活跃着的线程,当我们需要线程的时候直接从里面拿取空闲的线程来使用,使用完以后,直接归还即可。JDK中的Executor框架为了能更好的控制多个线程,JDK中java.util.cocurrent 包下提供了Executor框架,帮助发开人员控制线程的启动、执原创 2017-10-14 15:36:10 · 245 阅读 · 0 评论 -
秒杀实现
秒杀流程1.用户首先进入商品秒杀页面,当到达秒杀时间时前端的下单按钮才能点亮;2.点击以后并不是所有用户都能到达下单页面,1W+用户同时下单可能就只有20个用户才能进入下单页面,其他的用户直接到达秒杀结束页面,此时步骤可以使用Redis的单线程特性来统计和控制下单人数;3.成功进入填写订单页面的用户填写完订单以后再次提交订单,虽然此时并发请求数量最多只有20,但是我们还是需要使用Redis的单线程特原创 2018-01-03 14:13:19 · 579 阅读 · 0 评论 -
CyclicBarrier源码浅析
本文所使用的源码版本是JDK1.7 CyclicBarrier是什么? JDK1.7中的介绍如下: A synchronization aid that allows a set of threads to all wait for each other to reach a common barrier point. CyclicBarriers are usefu...原创 2018-05-20 16:08:17 · 409 阅读 · 1 评论