2021年4月29日
摘要:一、拨号流程总结 DialpadFragment提供用户拨号的交互界面CallIntentBuilder创建拨号请求的intent对象TelecomManager继续传递拨号请求intent对象 二、ITelecomService接收拨号请求服务 /packages/services/Telecom 阅读全文
posted @ 2021-04-29 00:38 心悦君兮君不知-睿 阅读(29) 评论(0) 推荐(0) 编辑
  2021年4月27日
摘要:一、简析HAL结构 HAL是一个位于操作系统和驱动程序之上,运行在用户空间中的服务程序。目的:对上层应用提供一个统一的查询硬件设备的接口。好处:简化了应用程序查询硬件的逻辑注意:HAL所谓的抽象不提供对硬件的实际操作,对硬件的操作仍然由具体的驱动程序来完成。 1.android为什么引入HAL 由于 阅读全文
posted @ 2021-04-27 00:19 心悦君兮君不知-睿 阅读(11) 评论(0) 推荐(0) 编辑
  2021年4月16日
摘要:一、释放锁 1.void unlock()方法 尝试释放锁,如果当前线程持有锁,则调用该方法会让该线程对该线程持有的AQS状态值减1,如果减去1后当前状态值为0,则当前线程会释放该锁,否则仅仅减去1而已,如果当前线程没有持有该锁而调用了该方法就会抛出IllegalMonitorStateExcept 阅读全文
posted @ 2021-04-16 00:07 心悦君兮君不知-睿 阅读(38) 评论(0) 推荐(0) 编辑
  2021年3月31日
摘要:一、类图结构 25.1 ReentrantLock是一个可重入锁,只有一个线程可以获取到该锁,其他线程想要获取该锁的时候会被放到AQS队列中。从类图中可以看到实现了Lock接口,内含一个Sync类型变量,该类型是继承自AQS抽象类,同时又有两个继承了类,分别为公平锁和非公平锁。 Sync sync; 阅读全文
posted @ 2021-03-31 00:14 心悦君兮君不知-睿 阅读(42) 评论(0) 推荐(0) 编辑
  2021年3月5日
摘要:一、使用自定义锁实现生成--消费模型 下面我们使用上节自定义的锁实现一个简单的生产--消费模型,代码如下: package com.ruigege.LockSourceAnalysis6;import java.util.Queue;import java.util.concurrent.locks 阅读全文
posted @ 2021-03-05 00:22 心悦君兮君不知-睿 阅读(26) 评论(0) 推荐(0) 编辑
  2021年2月26日
摘要:一、AQS-条件变量的支持(二) 在如下代码中,当另外一个线程调用条件变量的signal方法的时候(必须先调用锁的lock方法获取锁),在内部会把条件队列里面队头的一个线程节点从条件队列里面移除并且放入AQS的阻塞队列里面,然后激活这个线程。 public final void signal() { 阅读全文
posted @ 2021-02-26 00:27 心悦君兮君不知-睿 阅读(30) 评论(0) 推荐(0) 编辑
  2021年2月24日
摘要:一、编写评论页面 <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>D38_1_Review</title> <style> *{ margin:0; padding:0; list-style:none; } # 阅读全文
posted @ 2021-02-24 00:30 心悦君兮君不知-睿 阅读(35) 评论(0) 推荐(0) 编辑
  2021年2月22日
摘要:一、入队操作 当一个线程获取锁失败之后会被转换为Node节点,然后会使用enq方法,将该节点插入到AQS的阻塞队列,下面看一下这个方法如何实现 private Node enq(final Node node) { for(;;) { Node t = tail; if( t == null) { 阅读全文
posted @ 2021-02-22 23:07 心悦君兮君不知-睿 阅读(43) 评论(0) 推荐(0) 编辑
  2021年1月31日
摘要:一、AQS--锁的底层支持 1.AQS是什么 AQS是AbstractQueuedSychronizer的简称,即抽象同步队列的简称,这是实现同步器的重要组件,是一个抽象类,虽然在实际工作中很烧用到它,但是了解它的内部原理是很有必要的,并法包中锁的底层就是使用该抽象类实现的,下面类图 2.分析AQS 阅读全文
posted @ 2021-01-31 18:56 心悦君兮君不知-睿 阅读(57) 评论(0) 推荐(0) 编辑
  2021年1月23日
摘要:一、例子 下面来一个例子加深对park和unpark的理解 package com.ruigege.LockSourceAnalysis6;import java.util.concurrent.locks.LockSupport;public class TestParkAndUnpark { p 阅读全文
posted @ 2021-01-23 15:41 心悦君兮君不知-睿 阅读(62) 评论(0) 推荐(0) 编辑