buder

整理mianshi2

1.性能优化相关
https://www.cnblogs.com/cr330326/p/8011523.html


2.CountDownLatch
java共享锁实现原理及CountDownLatch解析
https://blog.csdn.net/yanyan19880509/article/details/52349056

3.Android事件分发机制
https://www.jianshu.com/p/e99b5e8bd67b


4.ArrayList是线程不安全的list,应该使用
CopyOnWriteArrayList与Collections.synchronizedList
https://blog.csdn.net/zljjava/article/details/48139465

5.linkedlist 线程安全
这些集合中线程安全的相关内容

6.
hashMap和数组扩容相关
浅谈JAVA中HashMap、ArrayList、StringBuilder等的扩容机制
https://www.cnblogs.com/lq147760524/p/6713677.html


7.java数组复制

8.ConcurrentModificationException的原因以及解决措施
https://my.oschina.net/hosee/blog/612718
一般有2种解决办法:
  1)在使用iterator迭代的时候使用synchronized或者Lock进行同步;(一个个迭代就和单线程一样了)
  2)使用并发容器CopyOnWriteArrayList代替ArrayList和Vector。

8.Java7 ConcurrentHashMap 和 HashMap的比较
ImportNew的文章,不错
http://www.importnew.com/28263.html


9.一个理解linkedHashMap和LRU算法的例子
accessOrder访问顺序,默认为false,就是按照插入的顺序来输出
设置为true,则为访问的顺序输出:get一个元素后,这个元素被加到最后(使用了LRU 最近最少被使用的调度算法)
https://blog.csdn.net/jiankeufo/article/details/73332772


10.wait()和sleep()的区别
知乎上的答案:
https://www.zhihu.com/question/23328075

Android相关:
1.system_server
知乎理解:
https://www.zhihu.com/question/55324499
整个流程的工作过程是这样的。system_server在启动时分别创建Binder线程和ActivityManager等对象。Binder线程进入循环等待跨进程调用,在收到跨进程调用后,Binder线程会根据调用内容,将调用分发给ActivityManager等对象进行处理,再将处理后的结果返回给调用进程。

Android正常启动流程如下:
Step1 系统加电,执行bootloader。Bootloader负责初始化软件运行所需要的最小硬件环境,最后加载内核到内存。
Step2 内核加载进内存后,将首先进入内核引导阶段,在内核引导阶段的最后,调用start_kenel进入内核启动阶段。start_kenel最终启动用户空间的init程序。
Step3 init程序负责解析init.rc配置文件,开启系统守护进程。两个最重要的守护进程是zygote进程和ServiceManager,zygote是Android启动的第一个Dalvik虚拟机,ServiceManager是Binder通讯的基础。
Step4 zygote虚拟机启动子进程system_server,在system_server中开启了核心系统服务,并将系统服务添加到ServiceManager中,然后系统进入SystemReady状态。
Step5 在SystemReady状态,ActivityManagerService与zygote中的socket通信,通过zygote启动home应用,进入系统桌面。

从Step3开始,init启动后,上层的实现。
Step1 init启动的核心Daemon服务包括Android的第一个Dalvik虚拟机zygote。
Step2 zygote定义一个socket,用于接受ActivityManagerService启动应用的请求。
Step3 zygote通过fork系统调用创建system_server进程
Step4 在system_server进程中,将会启动系统核心服务以及其他服务。
Step5 系统服务启动后会注册到ServiceManager中,用于Binder通信。
Step6 ActivityManagerService进入systemReady状态。
Step7 在systemReady状态,ActivityManagerService会与zygote的Socket通信,请求启动Home。
Step8 zygote收到AMS的连接请求后,执行runSelectLoopMode处理请求。
Step9 zygote处理请求会通过forkAndSpecialize启动新的应用进程,并最终启动Home。


2.serviceManager
https://www.cnblogs.com/lipeil/p/5982893.html

posted on 2018-06-12 23:53  buder  阅读(118)  评论(0编辑  收藏  举报

导航