
并发
antony9118
蚂蚁金服内推,简历发送至taiyi.wj@antfin.com
展开
-
JAVA多线程(二)竞态条件、死锁及同步机制
本文介绍了JAVA多线程常出现的安全问题(竞态条件、死锁),并介绍了解决方法(例如同步机制等)原创 2016-05-23 13:30:02 · 9028 阅读 · 5 评论 -
如何设计一个秒杀系统
原文: http://sobuhu.com/program/2013/04/07/how-to-design-seckill.html 后续补充:这篇文章已经很久了,当初的设想是单机编程,每台服务器获得自己能够卖出多少产品,用户被随机分配到每台机器上进行处理。1 题目1, 这是一个秒杀系统,即大量用户抢有限的商品,先到先得 2, 用户并发访问流量非常大, 需要分布式的机器集群处理请求 3,转载 2017-04-24 12:32:44 · 487 阅读 · 0 评论 -
Java多线程之CyclicBarrier、Future和FutureTask
原文出处: http://www.cnblogs.com/xrq730/p/4872722.html1 CyclicBarrier接着讲多线程下的其他组件,第一个要讲的就是CyclicBarrier。CyclicBarrier从字面理解是指循环屏障,它可以协同多个线程,让多个线程在这个屏障前等待,直到所有线程都达到了这个屏障时,再一起继续执行后面的动作。看一下CyclicBarrier的使用实例:转载 2017-04-24 17:39:05 · 1200 阅读 · 0 评论 -
ReentrantLock实现原理
出处: http://www.cnblogs.com/maypattis/p/6403682.html1 synchronized和lock1.1 synchronized的局限性synchronized是java内置的关键字,它提供了一种独占的加锁方式。synchronized的获取和释放锁由JVM实现,用户不需要显示的释放锁,非常方便。然而synchronized也有一定的局限性,例如: 1转载 2017-04-26 14:44:41 · 799 阅读 · 0 评论 -
记一次synchronized锁字符串引发的坑兼再谈Java字符串
出处: http://www.cnblogs.com/xrq730/p/6662232.html1 问题描述业务有一个需求,我把问题描述一下:通过代理IP访问国外某网站N,每个IP对应一个固定的网站N的COOKIE,COOKIE有失效时间。 并发下,取IP是有一定策略的,取到IP之后拿IP对应的COOKIE,发现COOKIE超过失效时间,则调用脚本访问网站N获取一次数据。 为了防止多线程取到同转载 2017-04-24 12:58:13 · 669 阅读 · 0 评论 -
jedisLock—redis分布式锁实现
原文出处: http://www.cnblogs.com/0201zcr/p/5942748.html1 使用分布式锁要满足的几个条件系统是一个分布式系统(关键是分布式,单机的可以使用ReentrantLock或者synchronized代码块来实现)共享资源(各个系统访问同一个资源,资源的载体可能是传统关系型数据库或者NoSQL)同步访问(即有很多个进程同事访问同一个共享资源。没有同步访问转载 2017-04-10 15:27:22 · 1076 阅读 · 0 评论 -
Java CompletableFuture 详解
出处: http://colobu.com/2016/02/29/Java-CompletableFuture/Future是Java 5添加的类,用来描述一个异步计算的结果。你可以使用isDone方法检查计算是否完成,或者使用get阻塞住调用线程,直到计算完成返回结果,你也可以使用cancel方法停止任务的执行。虽然Future以及相关使用方法提供了异步执行任务的能力,但是对于结果的获取却是很不转载 2017-05-21 21:40:22 · 2722 阅读 · 0 评论 -
Executor, ExecutorService 和 Executors 间的不同
出处: https://yemengying.com/2017/03/17/difference-between-executor-executorService/java.util.concurrent.Executor, java.util.concurrent.ExecutorService, java.util.concurrent. Executors 这三者均是 Java Execut转载 2017-06-19 10:41:54 · 976 阅读 · 0 评论 -
Java 里如何实现线程间通信?
出处: http://wingjay.com/2017/04/09/Java%E9%87%8C%E5%A6%82%E4%BD%95%E5%AE%9E%E7%8E%B0%E7%BA%BF%E7%A8%8B%E9%97%B4%E9%80%9A%E4%BF%A1%EF%BC%9F/正常情况下,每个子线程完成各自的任务就可以结束了。不过有的时候,我们希望多个线程协同工作来完成某个任务,这时就涉及到了线程间转载 2017-10-11 18:39:23 · 629 阅读 · 0 评论 -
线程池调整
出处: http://www.importnew.com/17633.html知道吗,你的Java web应用其实是使用线程池来处理请求的。这一实现细节被许多人忽略,但是你迟早都需要理解线程池如何使用,以及如何正确地根据应用调整线程池配置。这篇文章的目的是为了解释线程模型——什么是线程池、以及怎样正确地配置线程池。单线程模型让我们从一些基础的线程模型开始,然后再随着线程模型的演变进行更深一步的学习转载 2017-04-28 20:01:26 · 740 阅读 · 0 评论 -
什么时候使用CountDownLatch
出处: http://www.importnew.com/15731.html正如每个Java文档所描述的那样,CountDownLatch是一个同步工具类,它允许一个或多个线程一直等待,直到其他线程的操作执行完后再执行。在Java并发中,countdownlatch的概念是一个常见的面试题,所以一定要确保你很好的理解了它。在这篇文章中,我将会涉及到在Java并发编 程中跟CountDownLat转载 2017-04-24 18:17:11 · 435 阅读 · 0 评论 -
JAVA多线程(一)基本概念和上下文切换性能损耗
介绍了多线程的概念、优点,以及线程上下文切换时的性能损耗问题原创 2016-05-22 14:33:07 · 10740 阅读 · 3 评论 -
JAVA多线程(四)多线程数据共享
JAVA 多线程数据共享原创 2016-05-23 16:04:51 · 1477 阅读 · 0 评论 -
JAVA多线程(五)用lock、synchronized、阻塞队列三种方法实现生产者消费者模式
用乐观锁、悲观锁、阻塞队列三种方法实现生产者消费者模式原创 2016-05-25 17:35:30 · 6797 阅读 · 5 评论 -
ReentrantLock使用场景和实例
转载来源:https://my.oschina.net/noahxiao/blog/101558从使用场景的角度出发来介绍对ReentrantLock的使用,相对来说容易理解一些。可重入概念 若一个程序或子程序可以“安全的被并行执行(Parallel computing)”,则称其为可重入(reentrant或re-entrant)的。即当该子程序正在运行时,可以再次进入并执行它(并行执行时,个别转载 2016-09-25 20:35:46 · 21039 阅读 · 5 评论 -
JAVA多线程(三)生产者消费者模式及实现方法
介绍了生产者消费者模式以及实现方法(wait¬ify,阻塞队列原创 2016-05-23 15:15:02 · 13917 阅读 · 1 评论 -
CopyOnWrite代码及使用场景
CopyOnWrite 的核心思想是利用读写分离,因为高并发往往是读多写少。进行读操作的时候,不加锁以保证性能;对写操作则要加锁,先复制一份新的集合,在新的集合上面修改,然后将新集合赋值给旧的引用,并通过volatile 保证其可见性。我们所知道的CopyOnWriteArrayList就实现了这样的设计思想,下面是CopyOnWriteArrayList的一些核心方法的源代码,有助于理解其设计思想原创 2016-10-07 17:31:58 · 3122 阅读 · 0 评论 -
从volatile说到i++的线程安全问题
转载来源: http://www.cnblogs.com/zemliu/p/3298685.htmlvolatile关键字保证了 1. 可见性——在多线程环境下,被修饰的变量在别修改后会马上同步到主存,这样该线程对这个变量的修改就是对所有其他线程可见的,其他线程能够马上读到这个修改后值。 2. 禁止指令重排序优化本文中来谈谈第一点,可见性。Thread的本地内存每个Thread都拥有自己的线程转载 2016-11-23 15:48:46 · 1807 阅读 · 3 评论 -
LinkedBlockingQueue 实现原理分析
原文: http://fangjian0423.github.io/2016/05/10/java-arrayblockingqueue-linkedblockingqueue-analysis/Java中的阻塞队列接口BlockingQueue继承自Queue接口。BlockingQueue接口提供了3个添加元素方法:add:添加元素到队列里,添加成功返回true,由于容量满了添加失败会抛出I转载 2017-04-04 11:45:05 · 2064 阅读 · 0 评论 -
Java消息队列任务的平滑关闭
出处: https://my.oschina.net/lujianing/blog/787745对于消息队列任务的监听,我们一般使用Java写一个独立的程序,在Linux服务器上运行。当订阅者程序启动后,会通过消息队列客户端接收消息,放入线程池中并发的处理。那么问题来了,当我们修改程序后,需要重新启动时,如何保证消息都能够被处理呢?一些开源的消息队列中间件,会提供ACK机制(消息确认机制),当订阅转载 2017-11-09 12:23:53 · 1303 阅读 · 0 评论