并发
大树叶
宠辱不惊,看庭前花开花落;去留无意,望天空云卷云舒。
展开
-
无锁的 ( lock-free ) 线程安全算法
算法描述Lock-free算法的基础是 CAS (Compareand-Swap)原子操作。当某个地址的原始值等于某个比较值时,把值改成新值,无论有否修改,返回这个地址的原始值。目前的cpu支持最多64位的CAS。并且指针p必须对齐。 注:原子操作指一个cpu时钟周期内就可以完成的操作,不会被其他线程干扰。一般的 CAS使用方式是:假设有指针p,它指转载 2016-05-10 11:07:18 · 825 阅读 · 0 评论 -
Java 并发工具包 java.util.concurrent 大全
1. java.util.concurrent - Java 并发工具包Java 5 添加了一个新的包到 Java 平台,java.util.concurrent 包。这个包包含有一系列能够让 Java 的并发编程变得更加简单轻松的类。在这个包被添加以前,你需要自己去动手实现自己的相关工具类。本文我将带你一一认识 java.util.concurrent 包里的这些类,然后你可以尝试着如何转载 2016-05-03 13:54:43 · 964 阅读 · 0 评论 -
JAVA Concurrent包 中的并发集合类
我们平时写程序需要经常用到集合类,比如ArrayList、HashMap等,但是这些集合不能够实现并发运行机制,这样在服务器上运行时就会非常的消耗资源和浪费时间,并且对这些集合进行迭代的过程中不能进行操作,否则会出现错误,例如下面程序:[java] public class CollectionModifyExceptionTest { public static void m原创 2016-05-03 14:00:43 · 4341 阅读 · 0 评论 -
Java fork join ForkJoinPool 用法例子
本例是把一个大的数组求和的计算的大任务分解到在小范围内求和的小任务,然后把这些小任务之和加起来就是所求之结果。 技术:JDK8.0, java fork-join模式下的RecursiveTask技术,override compute(). /** * Author: Bigtree * 本例是把一个大的数组求和的计算的大任务分解到在小范围内求和的小任务,然后把这些小任务之和加起来就是原创 2016-05-02 23:38:06 · 2408 阅读 · 0 评论 -
Java多线程系列--“JUC集合”01之 框架
概要之前,在"Java 集合系列目录(Category)"中,讲解了Java集合包中的各个类。接下来,将展开对JUC包中的集合进行学习。在学习之前,先温习一下"Java集合包"。本章内容包括:Java集合包JUC中的集合类出处:http://www.cnblogs.com/skywang12345/p/3498454.html Java集合包转载 2016-05-08 11:03:14 · 619 阅读 · 0 评论 -
Java多线程系列--“JUC集合”02之 CopyOnWriteArrayList
出处:http://www.cnblogs.com/skywang12345/p/3498483.html概要本章是"JUC系列"的CopyOnWriteArrayList篇。接下来,会先对CopyOnWriteArrayList进行基本介绍,然后再说明它的原理,接着通过代码去分析,最后通过示例更进一步的了解CopyOnWriteArrayList。内容包括:CopyOnWrite转载 2016-05-08 11:07:04 · 2182 阅读 · 0 评论 -
Java多线程系列目录
原文地址: http://www.cnblogs.com/skywang12345/p/java_threads_category.htmlJava多线程系列目录(共43篇) 最近,在研究Java多线程的内容目录,将其内容逐步整理并发布。(一) 基础篇01. Java多线程系列--“基础篇”01之 基本概念02. Java多线程系列--“基础篇”02转载 2016-05-08 12:23:58 · 984 阅读 · 0 评论 -
Java多线程系列--“JUC线程池”02之 线程池原理(一)
概要在上一章"Java多线程系列--“JUC线程池”01之 线程池架构"中,我们了解了线程池的架构。线程池的实现类是ThreadPoolExecutor类。本章,我们通过分析ThreadPoolExecutor类,来了解线程池的原理。内容包括:ThreadPoolExecutor简介ThreadPoolExecutor数据结构线程池调度出处:http://www.cnb转载 2016-05-08 13:24:55 · 434 阅读 · 0 评论 -
深入Java集合学习系列:HashMap的实现原理
1. HashMap概述: HashMap是基于哈希表的Map接口的非同步实现(Hashtable跟HashMap很像,唯一的区别是Hashtalbe中的方法是线程安全的,也就是同步的)。此实现提供所有可选的映射操作,并允许使用null值和null键。此类不保证映射的顺序,特别是它不保证该顺序恒久不变。2. HashMap的数据结构: 在java编程语言中,最基本的结构就是两种,一转载 2016-05-09 10:14:17 · 448 阅读 · 0 评论 -
Java NIO详细介绍
不错的文章,推荐一下。http://www.ibm.com/developerworks/cn/education/java/j-nio/j-nio.htmljava nio的io模型是同步非阻塞,这里的同步异步指的是真正io操作(数据内核态用户态的拷贝)是否需要进程参与。而说java nio提供了异步处理,这个异步应该是指编程模型上的异步。基于reactor模式的原创 2016-05-03 01:11:02 · 379 阅读 · 0 评论 -
淘宝2012校招技术笔试题
实现五:统计一个单词可重复的英文文件(假设4G)中每个单词出现的次数,把结果按照英文排序放入一个文件中。并能够检索特定单词的出现次数。由于文件过大,不重复单词总数有限,需要考虑到执行速度和内存使用情况。(淘宝笔试技术题)import java.io.File;import java.io.FileNotFoundException;import java.io.FileOutputStre转载 2016-05-03 00:49:56 · 498 阅读 · 0 评论 -
并发队列ConcurrentLinkedQueue和阻塞队列LinkedBlockingQueue用法
并发队列ConcurrentLinkedQueue和阻塞队列LinkedBlockingQueue用法在Java多线程应用中,队列的使用率很高,多数生产消费模型的首选数据结构就是队列(先进先出)。Java提供的线程安全的Queue可以分为阻塞队列和非阻塞队列,其中阻塞队列的典型例子是BlockingQueue,非阻塞队列的典型例子是ConcurrentLinkedQueue,在实际应用中要转载 2016-05-02 20:15:18 · 434 阅读 · 0 评论 -
SQL注入攻击三部曲之入门篇
服务器安全管理员和攻击者的战争仿佛永远没有停止的时候,针对国内网站的ASP架构的SQL注入攻击又开始大行其道。本篇文章通过SQL注入攻击原理引出SQL注入攻击的实施方法,旨在企业安全管理员能够通过技术学习提升自己的安全意识。第一节、SQL注入原理 以下我们从一个网www.mytest.com开始(注:本文发表前已征得该站站长同意,大部分都是真实数据)。在网站首页上,有名为“IE不能打开转载 2016-05-10 12:24:12 · 452 阅读 · 0 评论 -
Java并发: CountDownLatch、CyclicBarrier和Semaphore
目录[-]CountDownLatch作用示例CyclicBarrier示例CyclicBarrier 和 CountDownLatch 在用法上的不同Semaphore示例:Semaphore 控制资源访问最后一句话总结(原来写过一篇相同标题的文章,不过因为 OSChina 编辑器的缘故,格式改乱了,所以重写一篇。原文已删除,收藏原文的朋友对不住。)这次说一下 JUC 中转载 2016-04-28 20:28:17 · 326 阅读 · 0 评论 -
TreeMap、HashMap、ConcurrentSkipListMap之性能比较
比较Java原生的 3种Map的效率。1. TreeMap2. HashMap3. ConcurrentSkipListMap结果:模拟150W以内海量数据的插入和查找,通过增加和查找两方面的性能测试,结果如下:Map类型插入查找(在100W数据量中)10W50W100W150W原创 2016-05-01 17:07:00 · 2954 阅读 · 0 评论 -
JAVA 中无锁的线程安全整数 AtomicInteger介绍和使用
JAVA 中无锁的线程安全整数 AtomicInteger,一个提供原子操作的Integer的类。在Java语言中,++i和i++操作并不是线程安全的,在使用的时候,不可避免的会用到synchronized关键字。而AtomicInteger则通过一种线程安全的加减操作接口。AtomicInteger为什么能够达到多而不乱,处理高并发应付自如呢?这是由硬件提供原子操作指令实现的原创 2016-05-02 13:36:52 · 21704 阅读 · 5 评论 -
ConcurrentLinkedQueue的实现原理分析
1. 引言在并发编程中我们有时候需要使用线程安全的队列。如果我们要实现一个线程安全的队列有两种实现方式一种是使用阻塞算法,另一种是使用非阻塞算法。使用阻塞算法的队列可以用一个锁(入队和出队用同一把锁)或两个锁(入队和出队用不同的锁)等方式来实现,而非阻塞的实现方式则可以使用循环CAS的方式来实现,本文让我们一起来研究下Doug Lea是如何使用非阻塞的方式来实现线程安全队列Concurr转载 2016-05-02 18:12:57 · 448 阅读 · 0 评论 -
JAVA CAS原理深度分析
java.util.concurrent包完全建立在CAS之上的,没有CAS就不会有此包。可见CAS的重要性。 CASCAS:Compare and Swap, 翻译成比较并交换。 java.util.concurrent包中借助CAS实现了区别于synchronouse同步锁的一种乐观锁。 本文先从CAS的应用说起,再深入原理解析。 CAS应用CAS有3个操作转载 2016-05-02 18:26:39 · 425 阅读 · 0 评论 -
Java并发包探秘 (一) ConcurrentLinkedQueue
本文是Java并发包探秘的第一篇,旨在介绍一下Java并发容器中用的一些思路和技巧,帮助大家更好的理解Java并发容器,让我们更好的使用并发容器打造更高效的程序。本人能力有限,错误难免。希望及时指出。Java并发包中有很多精心设计的高并发容器。有ConcurrentHashMap、ConcurrentSkipListMap 、ConcurrentLinkedQueue等。Concu转载 2016-05-02 18:45:38 · 440 阅读 · 0 评论 -
ConcurrentLinkedQueue使用方法
它是一个基于链接节点的无界线程安全队列。该队列的元素遵循先进先出的原则。头是最先加入的,尾是最近加入的。插入元素是追加到尾上。提取一个元素是从头提取。当多个线程共享访问一个公共 collection 时,ConcurrentLinkedQueue 是一个恰当的选择。该队列不允许null元素。This implementation employs an efficient "wait-fre转载 2016-05-02 18:50:27 · 803 阅读 · 0 评论 -
为何spring cloud 应该使用 Euraka server 而不是 Zookeeper
ureka是基于AP原则构建的,而ZooKeeper是基于CP原则构建的。这些可以从他们的特性中得到体现。ZK有一个Leader,而且在Leader无法使用的时候通过Paxos(ZAB)算法选举出一个新的Leader。这个Leader的目的就是保证写信息的时候只向这个Leader写入,Leader会同步信息到Followers。这个过程就可以保证数据的一致性。对比下ZK,Eurek原创 2017-10-30 00:45:28 · 6306 阅读 · 0 评论