#深入理解计算机系统

mysql索引最左匹配原则的理解

 CREATETABLE`student`(`id`int(11)NOTNULLAUTO_INCREMENT,`name`varchar(255)DEFAULTNULL,`cid`int(11)DEFAULTNULL,PRIMARYKEY(`id`),KEY`name_cid_INX`(`name`,`cid...

对一致性Hash算法,Java代码实现的深入研究

原文:http://www.cnblogs.com/xrq730/p/5186728.html知识点总结------------------------------------------------------------------------------------------------------------...

Hash和HashCode深入理解

目录介绍1.Hash的作用介绍1.1Hash的定义1.2Hash函数特性1.3Hash的使用场景2.如何判断两个对象相等2.1判断两个字符串2.2判断两个int数值2.3其他基本类型3.HashCode深入分析3.0HashCode是什么3.1为什么要重写HashCode3.2HashCode源代码分析3.3HashC...
代码星球 ·2020-12-09

深入浅出 Java Concurrency (15): 锁机制 part 10 锁的一些其它问题

  主要谈谈锁的性能以及其它一些理论知识,内容主要的出处是《JavaConcurrencyinPractice》,结合自己的理解和实际应用对锁机制进行一个小小的总结。 首先需要强调的一点是:所有锁(包括内置锁和高级锁)都是有性能消耗的,也就是说在高并发的情况下,由于锁机制带来的上下文切换、...

深入浅出 Java Concurrency (14): 锁机制 part 9 读写锁 (ReentrantReadWriteLock) (2)

  这一节主要是谈谈读写锁的实现。上一节中提到,ReadWriteLock看起来有两个锁:readLock/writeLock。如果真的是两个锁的话,它们之间又是如何相互影响的呢?事实上在ReentrantReadWriteLock里锁的实现是靠java.util.concurrent.locks....

深入浅出 Java Concurrency (13): 锁机制 part 8 读写锁 (ReentrantReadWriteLock) (1)

 从这一节开始介绍锁里面的最后一个工具:读写锁(ReadWriteLock)。ReentrantLock实现了标准的互斥操作,也就是一次只能有一个线程持有锁,也即所谓独占锁的概念。前面的章节中一直在强调这个特点。显然这个特点在一定程度上面减低了吞吐量,实际上独占锁是一种保守的锁策略,在这种情况下任何“读/读”...

深入浅出 Java Concurrency (12): 锁机制 part 7 信号量(Semaphore)

 Semaphore是一个计数信号量。从概念上讲,信号量维护了一个许可集。如有必要,在许可可用前会阻塞每一个 acquire(),然后再获取该许可。每个 release() 添加一个许可,从而可能释放一个正在阻塞的获取者。但是,不使用实际的许可对象,Semaphore ...

深入浅出 Java Concurrency (11): 锁机制 part 6 CyclicBarrier

  如果说CountDownLatch是一次性的,那么CyclicBarrier正好可以循环使用。它允许一组线程互相等待,直到到达某个公共屏障点(commonbarrierpoint)。所谓屏障点就是一组任务执行完毕的时刻。 清单1一个使用CyclicBarrier的例子packagexy...

深入浅出 Java Concurrency (10): 锁机制 part 5 闭锁 (CountDownLatch)

此小节介绍几个与锁有关的有用工具。闭锁(Latch)闭锁(Latch):一种同步方法,可以延迟线程的进度直到线程到达某个终点状态。通俗的讲就是,一个闭锁相当于一扇大门,在大门打开之前所有线程都被阻断,一旦大门打开所有线程都将通过,但是一旦大门打开,所有线程都通过了,那么这个闭锁的状态就失效了,门的状态也就不能变了,只能...

深入浅出 Java Concurrency (9): 锁机制 part 4 锁释放与条件变量 (Lock.unlock And Condition)

本小节介绍锁释放Lock.unlock()。Release/TryReleaseunlock操作实际上就调用了AQS的release操作,释放持有的锁。publicfinalbooleanrelease(intarg){   if(tryRelease(arg)){  ...

深入浅出 Java Concurrency (8): 加锁的原理 (Lock.lock)

接上篇,这篇从Lock.lock/unlock开始。特别说明在没有特殊情况下所有程序、API、文档都是基于JDK6.0的。publicvoidjava.util.concurrent.locks.ReentrantLock.lock()获取锁。如果该锁没有被另一个线程保持,则获取该锁并立即返回,将锁的保持计数设置为1。...

深入浅出 Java Concurrency (7): 锁机制 part 2 AQS

 在理解J.U.C原理以及锁机制之前,我们来介绍J.U.C框架最核心也是最复杂的一个基础类:java.util.concurrent.locks.AbstractQueuedSynchronizer。 AQSAbstractQueuedSynchronizer,简称AQS,是J.U.C最复杂的一个类...

深入浅出 Java Concurrency (6): 锁机制 part 1 Lock与ReentrantLock

 前面的章节主要谈谈原子操作,至于与原子操作一些相关的问题或者说陷阱就放到最后的总结篇来整体说明。从这一章开始花少量的篇幅谈谈锁机制。上一个章节中谈到了锁机制,并且针对于原子操作谈了一些相关的概念和设计思想。接下来的文章中,尽可能的深入研究锁机制,并且理解里面的原理和实际应用场合。尽管synchronized...

深入浅出 Java Concurrency (5): 原子操作 part 4 CAS操作

 在JDK5之前Java语言是靠synchronized关键字保证同步的,这会导致有锁(后面的章节还会谈到锁)。锁机制存在以下问题:(1)在多线程竞争下,加锁、释放锁会导致比较多的上下文切换和调度延时,引起性能问题。(2)一个线程持有锁会导致其它所有需要此锁的线程挂起。(3)如果一个优先级高的线程等待一个优先...
首页上一页...7172737475...下一页尾页