- 博客(8)
- 资源 (1)
- 收藏
- 关注
原创 ReentrantLock源码分析(三)
一、简介 本篇重点介绍一下 ReentrantLock 的其他几个重要的方法:public void lockInterruptibly() throws InterruptedException { sync.acquireInterruptibly(1);}public boolean tryLock() { return sync.nonfairTryAcquir
2017-08-27 16:49:09 274
原创 ReentrantLock源码分析(二)
一、简介 上一篇文章讲到,ReentrantLock方法的实现全部是依靠Sync的方法。而Sync又是继承了AQS,所以需要重点分析AQS。 AQS的设计是采用模板方法模式的。即如果要使用AQS,就需要继承AQS并重写AQS里指定的方法,
2017-08-27 16:41:52 327
原创 ReentrantLock源码分析(一)
一、简介 众所周知,Java并发组件中的一个重要框架就是AQS,简称同步器。全称AbstractQueuedSynchronizer,它是基于模板方法模式实现的。也就是说大体算法框架已经写好了,具体的一些细节需要用户去实现。
2017-08-27 16:22:54 289
原创 Java中ReentrantLock的公平锁和非公平锁
了解 Java 中 ReentrantLock 的程序员都知道,ReentrantLock 的核心组成是队列同步器 AbstractQueuedSynchronizer。而ReentrantLock中定义了内部抽象类Sync,又定义了NonfairSync和FairSync,这两者分别是非公平锁和公平锁的组件。
2017-08-27 15:46:55 430
原创 关于nontrivial default constructor(二)
情况一:如果一个没有任何构造函数的class派生自一个带有默认构造函数的base class,那么派生类的构造函数被视为nontrivial,因此会被编译器合成出来。它将调用基类的默认构造函数。class Base{public: Base() { cout << "Base constructor ..." << endl; }};class Derived : pu
2017-03-01 19:38:12 433
原创 关于nontrivial default constructor(一)
C++ Standard 说:对于class A来说, 如果没有任何 user-defined constructor, 那么会有一个 default constructor被隐式声明出来, 一个被隐式声明出来的 default constructor将是一个trivial constructor。以下四种情况为nontrivial default constructor:1. 如果一
2017-03-01 18:27:05 1163
原创 关于默认构造函数的一点琢磨--全局变量和局部变量
首先看一个例子:class A{public: //为了直接访问 int i; };A a;int main(void){ cout << a.i << endl; return 0;}这里的输出结果是0,因为a是一个全局变量,编译器在编译的时候会获得编译单元内的全局变量,然后生成两个函数:_sti() 和_std(),执行对象的构造和析构。本例
2017-03-01 13:59:45 791 1
转载 关于C++合成的默认构造函数
原文链接:http://www.cnblogs.com/QG-whz/p/4676481.html对于C++默认构造函数,我曾经有两点误解:类如果没有定义任何的构造函数,那么编译器(一定会!)将为类定义一个合成的默认构造函数。合成默认构造函数会初始化类中所有的数据成员。 第一个误解来自于我学习C++的第一本书 《C++ Primer》,在书中392页:“只有当
2017-02-25 18:46:12 364
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人