随笔分类 -  java 数据同步

摘要:转载自 再有人问你volatile是什么,就把这篇文章发给他 在再有人问你Java内存模型是什么,就把这篇文章发给他中我们曾经介绍过,Java语言为了解决并发编程中存在的原子性、可见性和有序性问题,提供了一系列和并发处理相关的关键字,比如synchronized、volatile、final、con 阅读全文
posted @ 2018-10-19 12:35 茅坤宝骏氹 阅读(0) 评论(0) 推荐(0)
摘要:转载自 一道非常棘手的 Java 面试题:i++ 是线程安全的吗 i++ 是线程安全的吗? 相信很多中高级的 Java 面试者都遇到过这个问题,很多对这个不是很清楚的肯定是一脸蒙逼。内心肯定还在质疑,i++ 居然还有线程安全问题?只能说自己了解的不够多,自己的水平有限。 先来看下面的示例来验证下 i 阅读全文
posted @ 2018-07-30 12:56 茅坤宝骏氹 阅读(0) 评论(0) 推荐(0)
摘要:转载自 彻底理解ThreadLocal 先总述,后分析 深挖过threadLocal之后,一句话概括:Synchronized用于线程间的数据共享,而ThreadLocal则用于线程间的数据隔离。所以ThreadLocal的应用场合,最适合的是按线程多实例(每个线程对应一个实例)的对象的访问,并且这 阅读全文
posted @ 2018-07-30 12:55 茅坤宝骏氹 阅读(0) 评论(0) 推荐(0)
摘要:转载自 详解Java多线程编程中LockSupport类的线程阻塞用法 LockSupport类是Java6(JSR166-JUC)引入的一个类,提供了基本的线程同步原语。LockSupport实际上是调用了Unsafe类里的函数,归结到Unsafe里,只有两个函数: public native v 阅读全文
posted @ 2018-07-21 11:40 茅坤宝骏氹 阅读(0) 评论(0) 推荐(0)
摘要:转载自 Java中的读/写锁 原文链接 作者:Jakob Jenkov 译者:微凉 校对:丁一 相比Java中的锁(Locks in Java)里Lock实现,读写锁更复杂一些。假设你的程序中涉及到对一些共享资源的读和写操作,且写操作没有读操作那么频繁。在没有写操作的时候,两个线程同时读一个资源没有 阅读全文
posted @ 2018-07-21 11:34 茅坤宝骏氹 阅读(0) 评论(0) 推荐(0)
摘要:转载自 Java 多线程 —— 深入理解 volatile 的原理以及应用 推荐阅读:《java 多线程—线程怎么来的》 这一篇主要讲解一下volatile的原理以及应用,想必看完这一篇之后,你会对volatile的应用原理以及使用边界会有更深刻的认知。本篇主要内容: volatile 读写同步原理 阅读全文
posted @ 2018-07-21 11:33 茅坤宝骏氹 阅读(0) 评论(0) 推荐(0)
摘要:转载自 Java并发编程:Lock 一.synchronized的缺陷 synchronized是java中的一个关键字,也就是说是Java语言内置的特性。那么为什么会出现Lock呢? 在上面一篇文章中,我们了解到如果一个代码块被synchronized修饰了,当一个线程获取了对应的锁,并执行该代码 阅读全文
posted @ 2018-07-21 11:33 茅坤宝骏氹 阅读(0) 评论(0) 推荐(0)
摘要:转载自 Java synchronized 中的while 和 notifyAll 问题1 为什么是while 而不是if 大多数人都知道常见的使用synchronized代码: synchronized (obj) { while (check pass) { wait(); } // do yo 阅读全文
posted @ 2018-07-21 11:10 茅坤宝骏氹 阅读(0) 评论(0) 推荐(0)
摘要:转载自 Java并发编程:深入剖析ThreadLocal 一.对ThreadLocal的理解 ThreadLocal,很多地方叫做线程本地变量,也有些地方叫做线程本地存储,其实意思差不多。可能很多朋友都知道ThreadLocal为变量在每个线程中都创建了一个副本,那么每个线程可以访问自己内部的副本变 阅读全文
posted @ 2018-07-20 09:30 茅坤宝骏氹 阅读(0) 评论(0) 推荐(0)
摘要:转载自 Java并发编程:volatile关键字解析 一.内存模型的相关概念 大家都知道,计算机在执行程序时,每条指令都是在CPU中执行的,而执行指令过程中,势必涉及到数据的读取和写入。由于程序运行过程中的临时数据是存放在主存(物理内存)当中的,这时就存在一个问题,由于CPU执行速度很快,而从内存读 阅读全文
posted @ 2018-07-20 09:30 茅坤宝骏氹 阅读(0) 评论(0) 推荐(0)
摘要:转载自 Java 并发工具包 java.util.concurrent 用户指南 1. java.util.concurrent - Java 并发工具包 Java 5 添加了一个新的包到 Java 平台,java.util.concurrent 包。这个包包含有一系列能够让 Java 的并发编程变 阅读全文
posted @ 2018-06-09 09:18 茅坤宝骏氹 阅读(0) 评论(0) 推荐(0)
摘要:转载自 Java 中的双重检查(Double-Check) 在 Effecitve Java 一书的第 48 条中提到了双重检查模式,并指出这种模式在 Java 中通常并不适用。该模式的结构如下所示: public Resource getResource() { if (resource == n 阅读全文
posted @ 2018-06-07 09:38 茅坤宝骏氹 阅读(0) 评论(0) 推荐(0)
摘要:转载自 如何在 Java 中正确使用 wait, notify 和 notifyAll – 以生产者消费者模型为例 wait, notify 和 notifyAll,这些在多线程中被经常用到的保留关键字,在实际开发的时候很多时候却并没有被大家重视。本文对这些关键字的使用进行了描述。 在 Java 中 阅读全文
posted @ 2018-06-07 09:38 茅坤宝骏氹 阅读(0) 评论(0) 推荐(0)
摘要:转载自 Java8 Striped64 和 LongAdder 数据 STRIPING 根据维基百科的这段说明: In computer data storage, data striping is the technique of segmenting logically sequential d 阅读全文
posted @ 2018-06-07 09:35 茅坤宝骏氹 阅读(0) 评论(0) 推荐(0)
摘要:转载自 线程间协作的两种方式:wait、notify、notifyAll和Condition 在前面我们将了很多关于同步的问题,然而在现实中,需要线程之间的协作。比如说最经典的生产者-消费者模型:当队列满时,生产者需要等待队列有空间才能继续往里面放入商品,而在等待的期间内,生产者必须释放对临界资源( 阅读全文
posted @ 2018-06-07 09:29 茅坤宝骏氹 阅读(0) 评论(0) 推荐(0)
摘要:转载自 深入理解多线程(四)—— Moniter的实现原理 本文是《深入理解多线程系列文章》的第四篇。点击查看原文,阅读该系列所有文章。 在深入理解多线程(一)——Synchronized的实现原理中介绍过关于Synchronize的实现原理,无论是同步方法还是同步代码块,无论是ACC_SYNCHR 阅读全文
posted @ 2018-05-23 09:16 茅坤宝骏氹 阅读(0) 评论(0) 推荐(0)
摘要:转载自 深入理解多线程(二)—— Java的对象模型 上一篇文章中简单介绍过synchronized关键字的方式,其中,同步代码块使用monitorenter和monitorexit两个指令实现,同步方法使用ACC_SYNCHRONIZED标记符实现。后面几篇文章会从JVM源码的角度更加深入,层层剥 阅读全文
posted @ 2018-05-23 09:16 茅坤宝骏氹 阅读(0) 评论(0) 推荐(0)
摘要:转载自 乐观锁的一种实现方式——CAS 在深入理解乐观锁与悲观锁一文中我们介绍过锁。本文在这篇文章的基础上,深入分析一下乐观锁的实现机制,介绍什么是CAS、CAS的应用以及CAS存在的问题等。线程安全 众所周知,Java是多线程的。但是,Java对多线程的支持其实是一把双刃剑。一旦涉及到多个线程操作 阅读全文
posted @ 2018-05-22 10:37 茅坤宝骏氹 阅读(0) 评论(0) 推荐(0)
摘要:转载自 对于线程安全的集合类(例如Vector)的任何操作是不是都能保证线程安全 之前在公众号中问了这个问题:对于线程安全的集合类(例如Vector)的任何操作是不是都能保证线程安全? 三天之内收到120+回复,其中表示不清楚的大概有10人左右,认为可以保证线程安全的有大概70人左右,认为不能保证线 阅读全文
posted @ 2018-05-19 08:46 茅坤宝骏氹 阅读(0) 评论(0) 推荐(0)
摘要:转载自 并发编程 – Concurrent 用户指南 1. java.util.concurrent – Java 并发工具包 Java 5 添加了一个新的包到 Java 平台,java.util.concurrent 包。这个包包含有一系列能够让 Java 的并发编程变得更加简单轻松的类。在这个包 阅读全文
posted @ 2018-05-08 10:16 茅坤宝骏氹 阅读(0) 评论(0) 推荐(0)