concurrent
jxl-taylor
细节决定成败,状态左右格局
展开
-
springboot应用打包发布在jboss中 事务@Transactional不起作用
springboot应用打包发布在jboss中 事务@Transactional不起作用在启动类中添加 @EnableTransactionManagement,因为springboot 默认是开启事务的,但是打war包后发布在应用服务器后需要增加这个注解开启事务。 在application.properties中增加spring.jta.enabled=false,这个是关键,这个目的是禁用springboot的默认事务管理方式JTA。 。...原创 2021-04-21 17:12:13 · 983 阅读 · 0 评论 -
java.lang.ThreadLocal<T>的具体实现
截取自:http://blog.csdn.net/lufeng20/article/details/24314381文中简要简要介绍了ThreadLocal核心部分。那么到底ThreadLocal类是如何实现这种“为每个线程提供不同的变量拷贝”的呢?先来看一下ThreadLocal的set()方法的源码是如何实现的:[java] view plain c转载 2017-05-16 20:18:39 · 320 阅读 · 0 评论 -
Condition 很好的例子
这个例子是将一个模拟的内存文件由 producer 读到buffer中, 然后由consumer从buffer中读取的例子,通过Condition来实现协调。buffer:文件的缓存import java.util.LinkedList;import java.util.concurrent.locks.Condition;import java.util.concurrent.locks.Re转载 2017-05-09 15:19:16 · 559 阅读 · 0 评论 -
Java并发编程:volatile关键字解析
转自:http://www.importnew.com/18126.htmlvolatile这个关键字可能很多朋友都听说过,或许也都用过。在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果。在Java 5之后,volatile关键字才得以重获生机。volatile关键字虽然从字面上理解起来比较简单,但是要用好不是一件容易的事情。由于volati转载 2017-05-18 20:40:59 · 374 阅读 · 0 评论 -
Java单例3种写法
延迟初始化 public class Singleton { private static Singleton instance; private Singleton (){} public static synchronized Singleton getInstance() { if (instance == null) {原创 2017-06-03 23:05:07 · 295 阅读 · 0 评论 -
Michael-Scott 非阻塞队列算法中的插入
CAS的基本使用模式:在更新某个值时存在不确定性,以及在更新失败时重新尝试。构建非阻塞算法的技巧在于:将执行原子修改的范围缩小到单个变量上。 链接队列比栈更为复杂,因为它必须支持对头节点和尾节点的快速访问。因此,它需要单独维护的头指针和尾指针。有两个指针指向尾部的节点:当前最后一个元素的next指针,以及尾节点。当成功地插入一个新元素时,这两个指针都需要采用原子操作来更新。 这转载 2017-06-03 23:34:46 · 389 阅读 · 0 评论 -
Michael-Scott 非阻塞队列算法中的插入
CAS的基本使用模式:在更新某个值时存在不确定性,以及在更新失败时重新尝试。构建非阻塞算法的技巧在于:将执行原子修改的范围缩小到单个变量上。 链接队列比栈更为复杂,因为它必须支持对头节点和尾节点的快速访问。因此,它需要单独维护的头指针和尾指针。有两个指针指向尾部的节点:当前最后一个元素的next指针,以及尾节点。当成功地插入一个新元素时,这两个指针都需要采用原子操作来更新。 这转载 2017-06-03 23:36:10 · 1284 阅读 · 0 评论 -
ConcurrentHashMap 原理
参考:http://blog.csdn.net/u010723709/article/details/48007881参考:http://www.jianshu.com/p/e694f1e868ecConcurrentHashMap是conccurrent家族中的一个类,由于它可以高效地支持并发操作,以及被广泛使用,经典的开源框架spring的底层数据结构就是使用C转载 2017-06-20 08:38:26 · 322 阅读 · 0 评论 -
ConcurrentSkipListMap、ConcurrentSkipListSet源码解读
本文转自:http://brokendreams.iteye.com/blog/2253955 ,难得一见的分析透彻的源码解读文章,值得收藏,好好阅读功能简介:ConcurrentSkipListMap是一种线程安全的有序的Map。一般我们使用有序Map,不要求线程安全的情况下,可以使用TreeMap,要求线程安全的话,就可以使用ConcurrentSkipList转载 2017-06-24 22:22:42 · 427 阅读 · 0 评论 -
LinkedTransferQueue 用法
TransferQueue是一个继承了BlockingQueue的接口,并且增加若干新的方法。LinkedTransferQueue是TransferQueue接口的实现类,其定义为一个无界的队列,具有先进先出(FIFO)的特性。 有人这样评价它:"TransferQueue是是ConcurrentLinkedQueue、SynchronousQueue (公平模式下)、无界的Link转载 2017-07-17 10:19:04 · 1009 阅读 · 0 评论 -
Java中的伪共享以及应对方案
转自:https://yq.aliyun.com/articles/62865什么是伪共享CPU缓存系统中是以缓存行(cache line)为单位存储的。目前主流的CPU Cache的Cache Line大小都是64Bytes。在多线程情况下,如果需要修改“共享同一个缓存行的变量”,就会无意中影响彼此的性能,这就是伪共享(False Sharing)。CPU的三转载 2017-07-26 17:14:58 · 1061 阅读 · 0 评论 -
Java并发——Fork/Join框架
转自:http://brokendreams.iteye.com/blog/2257941ForkJoin框架是什么? ForkJoin框架是jdk1.7提供的一个并行计算框架。ForkJoin框架能干什么? 首先ForkJoin框架是针对一些符合ForkJoin模型的任务而设计的,那什么是ForkJoin模型呢?看个图先:转载 2017-07-27 16:43:43 · 407 阅读 · 0 评论 -
Java中Unsafe类详解
转自:http://www.cnblogs.com/mickole/articles/3757278.htmljava不能直接访问操作系统底层,而是通过本地方法来访问。Unsafe类提供了硬件级别的原子操作,主要提供了以下功能:1、通过Unsafe类可以分配内存,可以释放内存;类中提供的3个本地方法allocateMemory、reallocateMemory、转载 2017-05-15 20:32:49 · 765 阅读 · 0 评论 -
Java的LockSupport.park()实现分析
转自:http://blog.csdn.net/hengyunabc/article/details/28126139LockSupport类是Java6(JSR166-JUC)引入的一个类,提供了基本的线程同步原语。LockSupport实际上是调用了Unsafe类里的函数,归结到Unsafe里,只有两个函数:[java] view plain转载 2017-05-15 20:30:07 · 253 阅读 · 0 评论 -
ThreadPoolExecutor原理
前言为什么要使用线程池?我们现在考虑最简单的服务器工作模型:服务器每当接收到一个客户端请求时就创建一个线程为其服务。这种模式理论上可以工作的很好,但实际上会存在一些缺陷,服务器应用程序中经常出现的情况是单个客户端请求处理的任务很简单但客户端的数目却是巨大的,因此服务器在创建和销毁线程所花费的时间和系统资源可能比处理客户端请求处理的任务花费的时间和资源更多。假设一个服务器完成一项转载 2017-04-23 08:40:14 · 754 阅读 · 0 评论 -
ExecutorService深入理解
ExecutorService是Executor直接的扩展接口,也是最常用的线程池接口,我们通常见到的线程池定时任务线程池都是它的实现类。原文: An Executor that provides methods to manage termination and methods that can produce a Future for tracking progress of one原创 2017-04-29 14:27:54 · 22387 阅读 · 0 评论 -
Future 深入理解
Future 表示异步计算的结果,提供了一些方法来检查是否计算完成,等待计算完成和取回计算结果。 当运算完成后只能通过 get 方法来获取结果。 必要时会阻塞当前线程直到计算完成。 通过cancel方法可以取消任务的执行。 其它方法用来决定任务是否正常执行完成还是被取消了,任务执行完成的任务不能被取消。 如果你想要使用Future的取消任务执行的功能而不不需要取得计算结果,那么你可以声明范原创 2017-04-30 09:05:22 · 955 阅读 · 0 评论 -
FutureTask源码深入分析
Futuretask继承自RunnableFuture接口,这个接口只有一个方法void java.util.concurrent.RunnableFuture.run()继承Runnable接口与Future接口, run方法执行成功会使得Future也执行完成,并可以访问执行结果 通过Future的get方法返回的执行结果类型。在未被取消的情况下,给Future设置计算结果。接下来讲解Fut原创 2017-05-01 14:19:10 · 700 阅读 · 0 评论 -
Callable、Runnable、Future、RunnableFuture和FutureTask 深入理解
Callable、Runnable、Future和FutureTask 做为java 线程池运行的重要载体,有必要深入理解。 Callable 和 Runnable 都是执行的任务的接口,区别在于Callable有返回值,而Runnable无返回值。 Future 表示异步任务返回结果的接口 RunnableFuture 继承了Runnable, Future,表示可以带有返回值的run接口原创 2017-05-01 13:44:39 · 1923 阅读 · 0 评论 -
Java内存访问重排序的研究
在高并发模型中,无是面对物理机SMP系统模型,还是面对像JVM的虚拟机多线程并发内存模型,指令重排(编译器、运行时)和内存屏障都是非常重要的概念,因此,搞清楚这些概念和原理很重要。否则,你很难搞清楚哪些操作是在并发先绝对安全的?哪些是相对安全的?哪些并发同步手段性能最低?valotile的二层语义分别是什么?等等。 本来打算自己写一篇有关JVM内存模型的博文,后来整理资料的时候偶转载 2017-05-01 15:47:03 · 567 阅读 · 0 评论 -
Treiber stack
import java.util.concurrent.atomic.AtomicReference;/** * 使用Treiber算法 Treiber算法主要用于实现Stack,基于Treiber算法实现的无阻塞的Stack * * @author feng * * @param */public class CurrentStack {A原创 2017-05-01 14:20:29 · 823 阅读 · 0 评论 -
AbstractExecutorService源码理解
这个类提供 ExecutorService 执行方法的默认实现。此类使用 newTaskFor 返回的 RunnableFuture 实现 submit、invokeAny 和 invokeAll 方法,默认情况下,RunnableFuture 是此包中提供的 FutureTask 类。例如,submit(Runnable) 的实现创建了一个关联 RunnableFuture 类,该类将被执行并返回原创 2017-05-03 19:44:08 · 450 阅读 · 0 评论 -
深入JVM锁机制1-synchronized
转自:http://blog.csdn.net/chen77716/article/details/6641477目前在Java中存在两种锁机制:synchronized和Lock,Lock接口及其实现类是JDK5增加的内容,其作者是大名鼎鼎的并发专家Doug Lea。本文并不比较synchronized与Lock孰优孰劣,只是介绍二者的实现原理。 数据同步需要依赖转载 2017-05-23 17:19:05 · 210 阅读 · 0 评论 -
ReentrantLock 理解
转自:http://blog.csdn.net/chen77716/article/details/6641477前文(深入JVM锁机制-synchronized)分析了JVM中的synchronized实现,本文继续分析JVM中的另一种锁Lock的实现。与synchronized不同的是,Lock完全用Java写成,在java这个层面是无关JVM实现的。在java.u转载 2017-05-23 17:22:01 · 312 阅读 · 0 评论 -
Condition 理解
转自:http://www.liuinsect.com/2014/01/27/how_to_understand_condition/在java.util.concurrent包中,有两个很特殊的工具类,Condition和ReentrantLock,使用过的人都知道,ReentrantLock(重入锁)是jdk的concurrent包提供的一种独占锁的实现。它继承自Dong Lea的 A转载 2017-05-23 17:23:35 · 305 阅读 · 0 评论 -
Java并发之AQS详解
一、概述 谈到并发,不得不谈ReentrantLock;而谈到ReentrantLock,不得不谈AbstractQueuedSynchronized(AQS)! 类如其名,抽象的队列式的同步器,AQS定义了一套多线程访问共享资源的同步器框架,许多同步类实现都依赖于它,如常用的ReentrantLock/Semaphore/CountDownLatch...。 以下是本文的目录大转载 2017-05-23 17:25:22 · 357 阅读 · 0 评论 -
Executor 概述
Executor 是jdk并发编程顶层接口,定义了线程池的标准。 它包含了一个方法execute,参数为一个Runnable接口引用。 源码:public interface Executor { void execute(Runnable command);}原文: An object that executes submitted Runnable tasks. This原创 2017-04-28 20:39:57 · 547 阅读 · 0 评论