
线程、锁、并发
文章平均质量分 86
tianjinsong
0101101001001
展开
-
高可用服务设计|如何应对缓存穿透|玩转布隆过滤器
一、背景用户中心是授权逻辑与用户信息相关逻辑构建的应用。分布式系统中,大多数业务都需要和用户中心打交道,为了保证用户中心服务的高可用,避免不了做缓存、导入搜索引擎从而降低数据库的压力。然而有些不经过用户中心授权的业务场景查询用户中心的数据,可能引发大量无效的查询,发生缓存穿透,直接对搜索引擎和数据库造成压力。如何解决用户中心缓存穿透的问题呢?接下来就着重说一下布隆过滤器是怎么“隔档”这些无效查询的。二、缓存穿透缓存穿透是指用户查询数据,在数据库没有,自然在缓存中也不会有。这样就导致用户查询的时候,在转载 2022-03-23 00:14:05 · 6946 阅读 · 0 评论 -
线程基础:interrupt、join
http://blog.youkuaiyun.com/yinwenjie/article/details/50510915(接上文《线程基础:线程(3)——JAVA中的基本线程操作(中)》)2-2、interrupt信号interrupt,单词本身的含义是中断、终止、阻断。当某个线程收到这个信号(命令)的时候,会将自生的状态属性置为“interrupted”,但是线程本身并不会立刻转载 2016-10-17 19:41:51 · 6115 阅读 · 0 评论 -
如何在 Java 中正确使用 wait, notify 和 notifyAll – 以生产者消费者模型为例
本文由 ImportNew - 伯乐在线翻译组 翻译自 javarevisited。欢迎加入翻译小组。转载请见文末要求。wait, notify 和 notifyAll,这些在多线程中被经常用到的保留关键字,在实际开发的时候很多时候却并没有被大家重视。本文对这些关键字的使用进行了描述。在 Java 中可以用 wait、notify 和 notifyAll 来实现线程间的通信。。举个转载 2016-10-17 14:39:40 · 4828 阅读 · 0 评论 -
Wait-Notify机制
http://www.ticmy.com/?p=219Wait-Notify机制可以说是实现阻塞操作较为高效的一种方式。虽然在实际中鼓励使用类库中已有的满足条件的类,或基于类库中的类来做满足自己特殊需求的开发,并不建议直接使用如此底层的机制,但了解其原理还是很有必要的。典型的Wait-Notify场景一般与以下内容相关:1、状态变量(State Variable)当线程转载 2016-10-17 11:05:28 · 6572 阅读 · 0 评论 -
从使用到原理学习Java线程池
http://www.silencedut.com/2016/06/25/%E4%BB%8E%E4%BD%BF%E7%94%A8%E5%88%B0%E5%8E%9F%E7%90%86%E5%AD%A6%E4%B9%A0Java%E7%BA%BF%E7%A8%8B%E6%B1%A0/线程池的技术背景在面向对象编程中,创建和销毁对象是很费时间的,因为创建一个对象要获取内转载 2016-10-26 16:50:49 · 4837 阅读 · 0 评论 -
Java线程池--原理及源码分析
http://www.jianshu.com/p/117571856b28合理使用线程池能够带来3个好处。第一,降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。第二,提高响应速度。当任务到达时,任务可以不需要等到线程创建就立即执行。第三,提高线程的可管理性。线程是稀缺资源,如果无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性,使用线程池可以统一的分配、转载 2016-10-26 16:49:37 · 4741 阅读 · 0 评论 -
Java 线程池原理和队列详解
http://blog.youkuaiyun.com/xx326664162/article/details/51701508参考: http://blog.youkuaiyun.com/mazhimazh/article/details/19243889 http://shift-alt-ctrl.iteye.com/blog/1840385 http://dongxuan.iteye.com/转载 2016-10-26 16:29:31 · 7292 阅读 · 0 评论 -
Java线程与Linux内核线程的映射关系
http://www.cnblogs.com/huangfox/p/4514644.htmlLinux从内核2.6开始使用NPTL (Native POSIX Thread Library)支持,但这时线程本质上还轻量级进程。 Java里的线程是由JVM来管理的,它如何对应到操作系统的线程是由JVM的实现来确定的。Linux 2.6上的HotSpot使用了NPTL机制,转载 2016-10-13 18:34:01 · 5836 阅读 · 0 评论 -
JAVA CAS原理深度分析
看了一堆文章,终于把Java CAS的原理深入分析清楚了。感谢GOOGLE强大的搜索,借此挖苦下百度,依靠百度什么都学习不到! http://blog.youkuaiyun.com/hsuxu/article/details/9467651参考文档:http://www.blogjava.net/xylz/archive/2010/07/04/325206.htmlhttp://blog.转载 2016-08-05 10:59:13 · 4656 阅读 · 0 评论 -
Java并发编程:Lock
作者:海子 出处:http://www.cnblogs.com/dolphin0520/ 在上一篇文章中我们讲到了如何使用关键字synchronized来实现同步访问。本文我们继续来探讨这个问题,从Java 5之后,在java.util.concurrent.locks包下提供了另外一种方式来实现同步访问,那就是Lock。 也许有朋友会问,转载 2016-08-03 18:36:24 · 4751 阅读 · 0 评论 -
java多线程 sleep()和wait()的区别
接触了一些多线程的东西,还是从java入手吧。 相信看这篇文章的朋友都已经知道进程和线程的区别,也都知道了为什么要使用多线程了。 这两个方法主要来源是,sleep用于线程控制,而wait用于线程间的通信,与wait配套的方法还有notify和notifyAll. 区别一:sleep是Thread类的方法,是线程用来 控制自身流程的,比如有一个要报时的线程,每一秒转载 2016-07-27 16:01:25 · 4690 阅读 · 0 评论 -
详细分析Java中断机制
http://www.infoq.com/cn/articles/java-interrupt-mechanism1. 引言当我们点击某个杀毒软件的取消按钮来停止查杀病毒时,当我们在控制台敲入quit命令以结束某个后台服务时……都需要通过一个线程去取消另一个线程正在执行的任务。Java没有提供一种安全直接的方法来停止某个线程,但是Java提供了中断机制。如果对Jav转载 2016-10-17 20:39:29 · 4644 阅读 · 0 评论 -
Java中Unsafe类详解
unsafe转载 2016-10-08 16:49:55 · 13592 阅读 · 0 评论 -
java线程池原理
http://www.cnblogs.com/xiaoQLu/archive/2013/05/13/2870588.html本文原创,转载请注明来自xiaoQLu http://www.cnblogs.com/xiaoQLu/archive/2013/05/13/2870588.html首先介绍一篇系统学习concurrency包的博文,有兴趣的可以细读下,写得很不错 ht转载 2016-11-02 21:03:08 · 4683 阅读 · 0 评论 -
Java线程池ThreadPoolExecutor源码分析
http://www.cnblogs.com/xiaoQLu/archive/2013/05/13/2870588.html本文原创,转载请注明来自xiaoQLu http://www.cnblogs.com/xiaoQLu/archive/2013/05/13/2870588.html首先介绍一篇系统学习concurrency包的博文,有兴趣的可以细读下,写得很不错 http转载 2016-11-02 21:01:18 · 4842 阅读 · 0 评论 -
乐观锁与悲观锁
http://www.jianshu.com/p/59ddb7002b30首先我们理解下两种不同思路的锁,乐观锁和悲观锁。这两种锁机制,是在多用户环境并发控制的两种所机制。下面看百度百科对乐观锁和悲观锁两种锁机制的定义:乐观锁( Optimistic Locking ) 相对悲观锁而言,乐观锁机制采取了更加宽松的加锁机制。悲观锁大多数情况下依靠数据库的锁机制实现,以保证操作最大转载 2016-11-02 20:25:06 · 4704 阅读 · 0 评论 -
【JUC】JDK1.8源码分析之SynchronousQueue(九)
http://www.cnblogs.com/leesf456/p/5560362.html一、前言 本篇是在分析Executors源码时,发现JUC集合框架中的一个重要类没有分析,SynchronousQueue,该类在线程池中的作用是非常明显的,所以很有必要单独拿出来分析一番,这对于之后理解线程池有很有好处,SynchronousQueue是一种阻塞队列,其中每个插入操作必须转载 2016-11-01 20:58:14 · 5571 阅读 · 0 评论 -
delayQueue原理理解之源码解析
http://www.jianshu.com/p/e0bcc9eae0ae内部结构可重入锁 用于根据delay时间排序的优先级队列 用于优化阻塞通知的线程元素leader 用于实现阻塞和通知的Condition对象 delayed和PriorityQueue在理解delayQueue原理之前我们需要先了解两个东西,delayed和PriorityQueue. d转载 2016-11-01 20:21:22 · 6862 阅读 · 0 评论 -
DelayQueue 源码分析
http://afredlyj.github.io/posts/delayqueue.htmlDelayQueue是一个无界的阻塞队列,从这个队列中取出来的元素都是过期的,head头是过期时间最长的元素。方法简介add往队列中增加一个元素,底层调用offer方法offer增加元素,有超时版本put增加元素,由于DelayQueue转载 2016-11-01 20:20:37 · 5878 阅读 · 0 评论 -
JDK并发工具类源码学习系列——PriorityBlockingQueue
http://vickyqi.com/2015/11/20/JDK%E5%B9%B6%E5%8F%91%E5%B7%A5%E5%85%B7%E7%B1%BB%E6%BA%90%E7%A0%81%E5%AD%A6%E4%B9%A0%E7%B3%BB%E5%88%97%E2%80%94%E2%80%94PriorityBlockingQueue/PriorityBlockingQueue是转载 2016-11-01 19:34:26 · 4640 阅读 · 0 评论 -
java中queue的使用
http://www.cnblogs.com/end/archive/2012/10/25/2738493.htmlQueue接口与List、Set同一级别,都是继承了Collection接口。LinkedList实现了Queue接 口。Queue接口窄化了对LinkedList的方法的访问权限(即在方法中的参数类型如果是Queue时,就完全只能访问Queue接口所定义的方法 了,而不转载 2016-11-01 17:47:32 · 4706 阅读 · 0 评论 -
java中的阻塞队列BlockingQueue
http://blog.youkuaiyun.com/u010142437/article/details/42278497一、概述位于Java.util.concurrent下,声明:public interface BlockingQueue extends Queue支持两个附加操作的 Queue,这两个操作是:获取元素时等待队列变为非空,以及存储元素时等待空间变得可用。Bl转载 2016-11-01 16:39:00 · 4584 阅读 · 0 评论 -
深入理解ThreadLocal
http://my.oschina.net/clopopo/blog/149368学习一个东西首先要知道为什么要引入它,就是我们能用它来干什么。所以我们先来看看ThreadLocal对我们到底有什么用,然后再来看看它的实现原理。ThreadLocal如果单纯从名字上来看像是“本地线程"这么个意思,只能说这个名字起的确实不太好,很容易让人产生误解,ThreadLocalVariable(转载 2016-08-26 14:59:22 · 6745 阅读 · 0 评论 -
Java中守护线程的总结
在Java中有两类线程:User Thread(用户线程)、Daemon Thread(守护线程) 用个比较通俗的比如,任何一个守护线程都是整个JVM中所有非守护线程的保姆:只要当前JVM实例中尚存在任何一个非守护线程没有结束,守护线程就全部工作;只有当最后一个非守护线程结束时,守护线程随着JVM一同结束工作。Daemon的作用是为其他线程的运行提供便利服务,守护线程最典型的应转载 2015-03-31 17:26:25 · 4004 阅读 · 0 评论 -
java并发系列:深入分析Synchronized
http://blog.youkuaiyun.com/bohu83/article/details/51141836本文属于并发编程网聊聊并发的学习笔记系列,作者是方腾飞大神,本文在基本上忠于原文,为了便于像我这样的不懂这块的同学更好理解,在原文基础上适当调整。为尊重原著大神:特意贴出原文地址:http://ifeve.com/java-synchronized/1术语:C转载 2016-09-23 12:18:02 · 4155 阅读 · 0 评论 -
JAVA线程池shutdown和shutdownNow的区别
shutDown() 当线程池调用该方法时,线程池的状态则立刻变成SHUTDOWN状态。此时,则不能再往线程池中添加任何任务,否则将会抛出RejectedExecutionException异常。但是,此时线程池不会立刻退出,直到添加到线程池中的任务都已经处理完成,才会退出。 shutdownNow() 根据JDK文档描述,大致意思转载 2016-09-11 23:52:52 · 5369 阅读 · 0 评论 -
java并发-ReentrantLock源码分析
http://blog.youkuaiyun.com/wojiushiwo945you/article/details/421713891关于可重入锁 ReentrantLock是基于AQS(AbstratcQueuedSynchronizer)实现的可重入的同步工具类,它提供了两种同步器的实现即公平锁FairSync和非公平锁NonfairSync。它提供了一种无条件的、可轮询的转载 2016-08-05 11:19:37 · 3752 阅读 · 0 评论 -
深度解析Java8 – AbstractQueuedSynchronizer的实现分析(上)
本文首发在infoQ :www.infoq.com/cn/articles/jdk1.8-abstractqueuedsynchronizer前言:Java中的FutureTask作为可异步执行任务并可获取执行结果而被大家所熟知,通常可以使用future.get()来获取线程的执行结果,在线程执行结束之前,get方法会一直阻塞状态,直到call()返回,其优点是使用线程异步执行任务的情转载 2016-08-05 12:26:24 · 4240 阅读 · 0 评论 -
深度解析Java8 – AbstractQueuedSynchronizer的实现分析(下)
本文首发在infoQ 作者:刘锟洋前言经过本系列的上半部分JDK1.8 AbstractQueuedSynchronizer的实现分析(上)的解读,相信很多读者已经对AbstractQueuedSynchronizer(下文简称AQS)的独占功能了然于胸,那么,这次我们再借助另一个工具类:CoutDownLatch,换个角度看看AQS的另外一个重要功能——共享功能的实现。转载 2016-08-05 12:31:27 · 3873 阅读 · 0 评论 -
一道很有意思的java线程题
http://www.cnblogs.com/onlywujun/p/3809311.html这几天看结城浩的《java多线程设计模式》,跟着做一些习题,有几道题目很有意思,记录下自己的体会。 首先是题目(在原书212页,书尾有解答):public class Main { public static void main(String[] args) {转载 2016-08-19 18:41:44 · 3794 阅读 · 0 评论 -
JAVA CAS原理深度分析
http://blog.youkuaiyun.com/hsuxu/article/details/9467651看了一堆文章,终于把Java CAS的原理深入分析清楚了。感谢GOOGLE强大的搜索,借此挖苦下百度,依靠百度什么都学习不到! 参考文档:http://www.blogjava.net/xylz/archive/2010/07/04/325206.htmlht转载 2016-08-20 11:06:05 · 3766 阅读 · 0 评论 -
理解CAS算法在JAVA中的作用
http://www.cnblogs.com/onlywujun/articles/3529572.html在JDK 5之前Java语言是靠synchronized关键字保证同步的,这会导致有锁。锁机制存在以下问题:(1)在多线程竞争下,加锁、释放锁会导致比较多的上下文切换和调度延时,引起性能问题。(2)一个线程持有锁会导致其它所有需要此锁的线程挂起。(转载 2016-08-20 14:58:58 · 4719 阅读 · 0 评论 -
Java的synchronized原理
http://www.cnblogs.com/onlywujun/articles/3530984.htmlsynchronized 原理 数据同步需要依赖锁,那锁的同步又依赖谁?synchronized给出的答案是在软件层面依赖JVM,而Lock给出的方案是在硬件层面依赖特殊的CPU指令,大家可能会进一步追问:JVM底层又是如何实现synchronized的? 本文所指说转载 2016-08-20 18:00:31 · 4311 阅读 · 0 评论 -
ConcurrentHashMap
ConcurrentHashMap是Java5中新增加的一个线程安全的Map集合,可以用来替代HashTable。对于ConcurrentHashMap是如何提高其效率的,可能大多人只是知道它使用了多个锁代替HashTable中的单个锁,也就是锁分离技术(Lock Stripping)。实际上,ConcurrentHashMap对提高并发方面的优化,还有一些其它的技巧在里面(比如你是否知道在g转载 2016-08-17 12:27:36 · 5189 阅读 · 0 评论 -
Condition-线程通信更高效的方式
Lock可以更好的解决线程同步问题,使之更面向对象,并且ReadWriteLock在处理同步时更强大,那么同样,线程间仅仅互斥是不够的,还需要通信,本篇的内容是基于上篇之上,使用Lock如何处理线程通信。 那么引入本篇的主角,Condition,Condition 将 Object 监视器方法(wait、notify 和 notifyAll)分解成截然不同的对象,以便通过将这转载 2016-09-02 17:45:10 · 3664 阅读 · 0 评论 -
Java并发编程——this引用逸出("this" Escape)
this引用逃逸转载 2016-09-22 15:06:55 · 8630 阅读 · 2 评论 -
Java并发编程:CountDownLatch、CyclicBarrier和Semaphore
http://www.cnblogs.com/dolphin0520/p/3920397.html 在java 1.5中,提供了一些非常有用的辅助类来帮助我们进行并发编程,比如CountDownLatch,CyclicBarrier和Semaphore,今天我们就来学习一下这三个辅助类的用法。 以下是本文目录大纲: 一.CountDownLatch用法转载 2016-09-04 11:29:42 · 3605 阅读 · 0 评论 -
Java 并发工具包 java.util.concurrent 用户指南
http://blog.youkuaiyun.com/defonds/article/details/44021605/译序本指南根据 Jakob Jenkov 最新博客翻译,请随时关注博客更新:http://tutorials.jenkov.com/java-util-concurrent/index.html。本指南已做成中英文对照阅读版的 pdf 文档,有兴趣的朋友可以去 Jav转载 2016-09-03 20:59:43 · 3852 阅读 · 0 评论 -
java.util.concurrent包详细分析
http://blog.youkuaiyun.com/windsunmoon/article/details/36903901#t11概述Java.util.concurrent 包含许多线程安全、测试良好、高性能的并发构建块。不客气地说,创建java.util.concurrent 的目的就是要实现 Collection 框架对数据结构所执行的并发操作。通过提供一组可靠的、高性能转载 2016-09-03 18:03:28 · 4051 阅读 · 0 评论 -
LockSupport的park和unpark的基本使用,以及对线程中断的响应性
http://blog.youkuaiyun.com/aitangyong/article/details/38373137 LockSupport是JDK中比较底层的类,用来创建锁和其他同步工具类的基本线程阻塞原语。java锁和同步器框架的核心 AQS: AbstractQueuedSynchronizer,就是通过调用 LockSupport .park()和 LockSupport .unp转载 2016-09-03 17:27:50 · 4656 阅读 · 0 评论