- 博客(54)
- 资源 (7)
- 收藏
- 关注
转载 atomic vs volatile
结论: atomic比volatile靠谱java.util.concurrent.atomic.Atomic*原子类和volatile关键字是java中两种常见的处理多线程下数据共享读写的机制。二者看似相同,但是在实际应用中有着不小的差别。volatile关键字是通过本地代码实现的写锁,只保证知有一个线程在写某个数据。JVM为了提高数据存取的速度,允许每个线程在自己独立的数据块,
2015-09-04 21:58:00 1236
转载 Java Atomic
我们知道volatile修饰的变量可以实现基本的加载和赋值的原子性,但是对于像i++等操作就不能保证原子性了,在JDK1.5之前我们只能通过 synchronized(阻塞的方式)实现这些复合操作的原子性,在JDK1.5中java.util.concurrent.atomic 包提供了若干个类能实现对int,long,boolean,reference的几个特殊方法非阻塞原子性,这一系列类的主要基
2015-09-04 21:53:58 978
转载 java.util.concurrent.atomic原子操作类包
这个包里面提供了一组原子变量类。其基本的特性就是在多线程环境下,当有多个线程同时执行这些类的实例包含的方法时,具有排他性,即当某个线程进入方法,执行其中的指令时,不会被其他线程打断,而别的线程就像自旋锁一样,一直等到该方法执行完成,才由JVM从等待队列中选择一个另一个线程进入,这只是一种逻辑上的理解。实际上是借助硬件的相关指令来实现的,不会阻塞线程(或者说只是在硬件级别上阻塞了)。可以对基本数据、
2015-09-04 21:52:27 998
转载 Java中的Atomic包使用指南
引言Java从JDK1.5开始提供了java.util.concurrent.atomic包,方便程序员在多线程环境下,无锁的进行原子操作。原子变量的底层使用了处理器提供的原子指令,但是不同的CPU架构可能提供的原子指令不一样,也有可能需要某种形式的内部锁,所以该方法不能绝对保证线程不被阻塞。Atomic包介绍在Atomic包里一共有12个类,四种原子更新方式,分别
2015-09-04 21:51:57 1319
转载 原子变量(AtomicLong, AtomicInteger, AtomicReference)
J2SE 5.0提供了一组atomic class来帮助我们简化同步处理。基本工作原理是使用了CAS实现了对一个long, integer, 对象的增、减、赋值(更新)操作. 比如对于++运算符AtomicInteger可以将它持有的integer 能够atomic 地递增。在需要访问两个或两个以上 atomic变量的程序代码(或者是对单一的atomic变量执行两个或两个以上的操作)通常都需要被s
2015-09-04 21:47:20 1194
转载 AtomicReference原子类
AtomicReference介绍和函数列表AtomicReference是作用是对"对象"进行原子操作。AtomicReference函数列表// 使用 null 初始值创建新的 AtomicReference。AtomicReference()// 使用给定的初始值创建新的 AtomicReference。AtomicReference(V initialVa
2015-09-04 21:42:17 2274
转载 Maven Assembly插件介绍
你是否想要创建一个包含脚本、配置文件以及所有运行时所依赖的元素(jar)Assembly插件能帮你构建一个完整的发布包。Assembly插件会生成 “assemblies”, 此特性等同于的Maven 1 distribution plug-in.。该插件不仅支持创建二进制归档文件,也支持创建源码归档文件。这些assemblies定义在一个assembly描述符文件里。你可以选择自定义asse
2015-09-03 19:22:59 2785
转载 如何将maven项目打包成可执行的jar
方法一:将项目及所依赖的所有jar包打包成一个jar。1、pom.xml添加assembly插件 2、执行mvn assembly:assembly 3、生成如下文件 4、执行java -jar quickstart-1.0.0-jar-with-dependencies.jar 备注:第2步的命令也可以改成m
2015-09-03 19:21:13 926
转载 maven 打包可执行jar的方法
1.修改pom.xml增加如下内容[html] view plaincopyplugin> groupId>org.apache.maven.pluginsgroupId> artifactId>maven-jar-pluginartifactId> version>2.4version>
2015-09-03 19:20:29 942
转载 使用Maven
1.使用属性properties和exclusions如果要阻断一些传递的依赖,可以添加:exclusions,这样可以不在构建的时候往我们的构件离添加太多无用的jar,前提是经过测试,阻断依赖后程序功能无异常,或添加了其它相同功能的依赖,如阻断收费版,换成依赖免费版。Xml代码 org.spring.framework
2015-09-02 21:26:12 944
转载 SynchronousQueue的简单应用2
SynchronousQueue的定义如下public class SynchronousQueueextends AbstractQueueimplements BlockingQueue, Serializable从上面可以看出,它实现BlockingQueue,所以是阻塞队列,从名字看,它又是同步的。它模拟的功能类似于生活中一手交钱一手交货这种情形
2015-09-01 10:58:41 987
转载 SynchronousQueue
SynchronousQueue是这样一种阻塞队列,其中每个 put 必须等待一个 take,反之亦然。同步队列没有任何内部容量,甚至连一个队列的容量都没有。 不能在同步队列上进行 peek,因为仅在试图要取得元素时,该元素才存在; 除非另一个线程试图移除某个元素,否则也不能(使用任何方法)添加元素;也不能迭代队列,因为其中没有元素可用于迭代。队列的头是尝试添加到队列中
2015-09-01 10:57:46 879
转载 BlockingQueue的使用
本例介绍一个特殊的队列:BlockingQueue,如果BlockQueue是空的,从BlockingQueue取东西的操作将会被阻断进入等待状态,直到BlockingQueue进了东西才会被唤醒.同样,如果BlockingQueue是满的,任何试图往里存东西的操作也会被阻断进入等待状态,直到BlockingQueue里有空间才会被唤醒继续操作. 使用BlockingQueue的关键技
2015-09-01 10:57:15 1261
转载 并发队列ConcurrentLinkedQueue和阻塞队列LinkedBlockingQueue用法
在Java多线程应用中,队列的使用率很高,多数生产消费模型的首选数据结构就是队列(先进先出)。Java提供的线程安全的Queue可以分为阻塞队列和非阻塞队列,其中阻塞队列的典型例子是BlockingQueue,非阻塞队列的典型例子是ConcurrentLinkedQueue,在实际应用中要根据实际需要选用阻塞队列或者非阻塞队列。注:什么叫线程安全?这个首先要明确。线程安全就是说多线程访问同
2015-09-01 10:49:42 2401
Zookeeper资源文件
2017-03-20
Zookeeper基础知识
2017-03-20
Zookeeper初识
2017-03-20
使用exe4j 制作java启动程序的 等候界面
2014-06-12
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人