随笔分类 -  开发语言

摘要:一、ReentrantLock类中的方法解读。 1、lock方法。实现了接口Lock中的lock方法。这里实际上是调用了sync成员变量的lock方法来实现。所以取决于sync的实现。 2、unlock方法。实现了接口Lock中的unlock方法。这里实际上是调用了sync成员变量的release方 阅读全文
posted @ 2018-08-28 12:58 igoodful 阅读(205) 评论(0) 推荐(0)
摘要:一、简介。 ReentrantLock 是一个互斥锁,在基本行为和机制上与synchonized一样,只不过synchonized用方法和声明访问了隐式的锁监视器,但是ReentrantLock 做了功能上的扩展。ReentrantLock 被最后一个成功lock,但是还没unlock的线程拥有。当 阅读全文
posted @ 2018-08-28 12:55 igoodful 阅读(224) 评论(0) 推荐(0)
摘要:点多 阅读全文
posted @ 2018-08-28 09:54 igoodful 阅读(254) 评论(0) 推荐(0)
摘要:一、成员变量。 1、目录。 2、state。该变量标记为volatile,说明该变量是对所有线程可见的。作用在于每个线程改变该值,都会马上让其他线程可见,在CAS(可见锁概念与锁优化)的时候是必不可少的。在AQS类中,不会直接操作这个值,而是交由它的子类去操作和定义他的作用。 ########### 阅读全文
posted @ 2018-08-28 09:37 igoodful 阅读(197) 评论(0) 推荐(0)
摘要:假如java类里的成员变量是自身的对象,则新建该类对象时内存中怎么分配空间,我感觉似乎死循环了。 不过我想的肯定是错的,因为很多类的成员变量是自身对象,并且绝对无错,举个例子: 1.程序运行的时候会产生一个栈溢出错误的异常 Exception in thread “main” java.lang.S 阅读全文
posted @ 2018-08-24 10:35 igoodful 阅读(1883) 评论(0) 推荐(1)
摘要:一、AbstractQueuedSynchronizer类介绍。 该抽象类有两个内部类,分别是静态不可继承的Node类和公有的ConditionObject类。AbstractQueuedSynchronizer的核心实现是一个双向队列,队列中的每一个元素是一个Node。Node是AbstractQ 阅读全文
posted @ 2018-08-23 09:22 igoodful 阅读(213) 评论(0) 推荐(0)
摘要:一、Lock源码。 1、是一个接口。一共有6个方法。 2、方法详细如下: (1)当前线程尝试获取锁。结果分两种情况,一是成功获取到锁,则返回;二是获取锁失败,则一直等待。不响应中断请求。 (2)当前线程释放掉自己所占用的锁。同时唤醒这个锁上的一个等待线程。(两个任务) (3)当前线程尝试以非公平的方 阅读全文
posted @ 2018-08-22 16:58 igoodful 阅读(277) 评论(0) 推荐(0)
摘要:一、概述。 Comparator和Comparable两者都属于集合框架的一部分,都是用来在对象之间进行比较的,但两者又有些许的不同,我们先通过一个例子来看一下他们的区别,然后再分别学习下它们的源码。 先来看一下Comparable的例子,定义实体类Student,实现Comparable,重写co 阅读全文
posted @ 2018-08-22 15:09 igoodful 阅读(4080) 评论(1) 推荐(1)
摘要:ff 阅读全文
posted @ 2018-08-21 09:10 igoodful 阅读(186) 评论(0) 推荐(0)
摘要:订单 阅读全文
posted @ 2018-08-20 16:37 igoodful 阅读(168) 评论(0) 推荐(0)
摘要:刚刚 阅读全文
posted @ 2018-08-20 16:07 igoodful 阅读(170) 评论(0) 推荐(0)
摘要:刚刚 阅读全文
posted @ 2018-08-20 16:02 igoodful 阅读(246) 评论(0) 推荐(0)
摘要:方法 阅读全文
posted @ 2018-08-20 15:30 igoodful 阅读(162) 评论(0) 推荐(0)
摘要:订单 阅读全文
posted @ 2018-08-20 15:24 igoodful 阅读(121) 评论(0) 推荐(0)
摘要:##################################################################### 我们知道多线程操作共享资源时,会出现三个问题:可见性、有序性以及原子性。 一般情况下,我们采用synchronized同步锁(独占锁、互斥锁),即同一时间只有一 阅读全文
posted @ 2018-08-17 16:58 igoodful 阅读(478) 评论(0) 推荐(0)
摘要:一、CMPXCHG汇编指令详解。 这条指令将al\ax\eax\rax中的值与首操作数比较: 1.如果相等,第2操作数的直装载到首操作数,zf置1。(相当于相减为0,所以0标志位置位) 2.如果不等, 首操作数的值装载到al\ax\eax\rax,并将zf清0 二、举例说明。 例如: CMPXCHG 阅读全文
posted @ 2018-08-17 16:01 igoodful 阅读(4347) 评论(0) 推荐(0)
摘要:一、动画演示。 1、https://www.scss.tcd.ie/Jeremy.Jones/vivio/caches/MESIHelp.htm 2、https://www.jianshu.com/p/81770751c11c #################################### 阅读全文
posted @ 2018-08-17 14:35 igoodful 阅读(2741) 评论(0) 推荐(4)
摘要:一、一共11个成员变量。 二、详情介绍。 1、value值。这个是Integer类的唯一标志。最重要的实例属性。 2、最小值和最大值常量。注意,计算机里面是以补码形式保存的,因此用十六进制时,给的数据必须是一个数的补码形式赋值。这里是32位机器,所以最大值和最小值表示如下: 3、数据位数和字节数常量 阅读全文
posted @ 2018-08-16 17:18 igoodful 阅读(359) 评论(1) 推荐(0)
摘要:一、源码。 1、equals源码。可以看出,比较的是两者的类型相同且内容相同。即是否有相等的int类型的value值。 ########################################################################################## 阅读全文
posted @ 2018-08-16 16:05 igoodful 阅读(283) 评论(0) 推荐(0)
摘要:在开始详细的说明问题之前,我们先看一段代码 这段代码输出的结果是什么呢? 答案是: 是不是感到奇怪呢?为什么127的时候==是true,128的时候就变成了false?其实要回答这个问题不难。 Integer在赋值的时候会发生自动装箱操作,调用Integer的valueOf方法,那么我们看一下jav 阅读全文
posted @ 2018-08-16 15:36 igoodful 阅读(143) 评论(0) 推荐(0)