- 博客(18)
- 资源 (10)
- 收藏
- 关注
原创 Android进程-zygote进程
一,zygote进程zygote进程的父进程是init,zygote也是所有应用的父进程,也是system_server进程的父进程。 1.1 Zygote系统源码组成1) Zygote.java(frameworks/base/core/java/com/android/internal/os/)提供访问vm的zygote接口,主要是包装Linux系统的fork,以
2018-01-31 17:49:32 470
原创 Android中的线程模型(十一)
转 如何优雅的停止线程:http://www.cnblogs.com/l2rf/p/5566895.htmlAndroid规定只有ui线程,也就是主线程才可以刷新UI,这样的规定的原因是UI操作是非线程安全的,如果允许多个线程同时执行ui操作,就必要加同步,而同步机制会影响执行性能,因为在同步中去wait或notify一个线程,通常都要借助操作系统来完成,所以存在用户线程跟内核线程之间的切换,这个...
2018-01-29 09:11:14 338
原创 多线程编程-线程中异常的处理(十)
1,对指定的线程对象设置默认的异常处理: setUncaughtExceptionHandler()。测试代码:public class MyThread extends Thread{ @Override public void run() { String user = null; System.out.println("--"+user.hashCode());
2018-01-22 15:15:46 262
原创 多线程编程-单例模式的实现方式(九)
1,饿汉式,也叫立即加载,就是使用类的时候已经将对象创建完毕,常用的方法是直接new实例化。public class SingletonObject { private static SingletonObject sObj = new SingletonObject(); private SingletonObject(){ } public static SingletonOb
2018-01-22 11:29:15 212
原创 多线程编程-ReentrantReadWriteLock(八)
ReentrantReadWriteLock类1,ReentrantLock类具有完全互斥排他的效果,即同一时刻只有一个线程在执行ReentrantLock().lock()方法后面的代码。这样做虽然保证了实例变量的线程安全性,到时效率较低。ReentrantReadWriteLock类,包括两个锁,一个是读操作相关的锁,也称共享锁;另一个是写操作相关的锁,也称排他锁。多个读锁之间不互斥,读锁和写
2018-01-19 15:50:53 198
原创 多线程编程-ReentrantLock(八)
1,在java多线程中,可以使用synchronized关键字实现线程间同步互斥,也可以使用ReentrantLock达到同样的效果。ReentrantLock拥有一些扩展功能,如:等待可中断,可实现公平锁,锁可以绑定多个条件,尝试锁定等。测试代码:public class MyService { private Lock lock = new ReentrantLock(); public
2018-01-19 10:50:48 266
原创 多线程编程-线程间通信-ThreadLocal(七)
1,ThreadLocal类主要解决的是每个线程绑定自己的值,这里存储的是每个线程私有的数据,解决了变量在不同线程间的隔离性。测试代码:public class Tools { public static ThreadLocal tl = new ThreadLocal();}public class ThreadA extends Thread { @Override public v
2018-01-18 10:16:02 818
原创 多线程编程-线程间通信-join方法的使用(六)
方法join的使用1,主线程启动子线程后,如果主线程项等子线程执行完成后再结束,就要用到join()方法了。测试代码:public class JoinThread extends Thread{ @Override public void run() { try { int value = (int)(Math.random()*10000); System.out.pri
2018-01-17 17:30:59 256
原创 多线程编程-线程间通信.管道(五)
通过管道进行线程间通信:字节流(PipedOutputStream,PipedInputStream)在Java中提供了各种各样的输入/输出流Stream,其中管道流(pipeStream)是一种特殊的流,用于在不同线程间直接传送数据。一个线程发送数据到输出管道,另一个线程从输入管道中读数据。使用管道实现线程间的通信,不需要借助类似临时文件之类的东西。测试代码:public class
2018-01-17 14:58:50 676
原创 多线程编程-线程间通信.wait/notify(四)
多个线程通过共同访问一个变量的方式,也可以实现线程间通信,通过这种方式,线程要主动去读取一个共享变量,一方面需要加同步,另一方面花费了读取变量的时间,但是读取到的值是不是要想要的,并不能确定。而等待/通知机制,可以更好解决线程间数据读取时机的问题。1,不使用等待/通知机制的线程间通信测试代码:public class MyList { private List list = new ArrayL
2018-01-16 17:36:27 419
原创 多线程编程-volatile关键字(三)
2.3 volatile关键字Volatile关键字的主要作用是使变量的多个线程间可见。还有一点就是禁止指令重排序。 使用volatile关键字增加了实例变量在多个线程之间的可见性,但是volatile不能保证原子性。关键synchronized和volatile的比较:1)volatile是线程同步的轻量级实现,所以volatile性能比synchronized要好,并且vo
2018-01-15 16:00:26 290
原创 Java的内存分配和管理
Java的内存分配和管理Java内存分配时涉及的区域:寄存器:在程序中无法控制;栈:存放基本类型的数据和对象的引用,但是对象本身不存放在栈中,而是存放在堆中;堆:存放用new产生的数据;静态域:存放在对象中用static定义的静态成员;常量池:存放常量。内存分配中的栈和堆1.栈在函数中定义的一些基本类型的变量数据,还有对象的引用变量都在函数的栈内存中分配。...
2018-01-14 22:46:13 6167 1
原创 Android 虚拟机的进程管理
一Android 虚拟机的进程管理Android 虚拟机进程管理是依赖linux的进程体系结构的,要为应用程序创建一个进程,它会使用linux的fork机制来复制一个进程(复制进程比创建进程更高效) 。执行这个操作的就是zygote。zygote是一个虚拟机进程,也是一个虚拟机实例的孵化器。当一个应用程序启动时,会通过socket发出请求,zygote在收到请求后会fork一个新的应用程序
2018-01-13 22:47:50 2026
原创 多线程编程-synchronized语句块(二)
2.2 synchronized 同步语句块2.2.1 使用synchronized同步方法时,如果一个线程调用同步方法执行一个长时间的任务,那么其他线程必须等待很长时间,这时用同步语句块可提高执行效率。同步方法耗时测试代码:public class Task { private String getData1; private String getData2; publ
2018-01-12 14:36:57 230
原创 多线程编程-Synchronized同步方法(二)
2.1 synchronized 同步方法 “非线程安全”会在多个线程对同一个对象中的实例变量进行并发访问时发生,产生的后果就是“脏读”,也就是读到的数据其实是被更改过的。 “线程安全”就是获取的实例变量的值是经过同步处理的,不会出现脏读的现象。 2.1.1 方法内的变量是线程安全的 “非线程安全”的问题存在于“实例变量”中,如果是方法内部的私有变量,就是“线
2018-01-10 15:40:28 328
原创 多线程编程-Java线程概述(一)
一,Java多线程技能1.1进程和多线程的概念可以把一个正在操作系统中运行的程序理解为一个“进程”。进程是受操作系统管理的基本运行单元。线程可以理解为在进程中独立运行的子任务。当打开浏览器,下载文件的同时,还可以打开看视频,这些功能就对应了多个线程在后台运行。使用多线程就是在使用异步,因为每个线程被调用的时机是随机的。1.2继承Thread类,实现Runnable接口。实现多线程的方式...
2018-01-09 10:12:25 230
原创 Android GUI系统-ViewTree的绘图遍历(六)
ViewTree的绘图遍历绘图遍历也就是ViewTree遍历过程的最后一步。这个过程有3个核心的步骤:1)canvas= mSurface.lockCanvas(dirty);2)mView.draw(canvas);3)surface.unlockCanvasAndPost(canvas);和View直接交互的是canvas,可以认为是作画的工具集。应用程序跟surf
2018-01-07 20:48:50 406
转载 基于android6.0版本的SELinux文件访问安全策略
转自:http://blog.chinaunix.net/uid-7213935-id-5750899.html 在android6.0以后的版本,google采用了SELinux的文件访问安全策略,想比较以前,绝对提高了文件的安全,不像以前那样,对文件访问可以是无条件的。本篇文章就分享下常用的一些安全策略。1. linux传统 设备文件访问控制方法 传统的 Linux设备文件
2018-01-02 16:41:52 323
simple-ffmpeg-player.zip
2020-03-13
jetty-libs-9.4.zip
2019-11-26
android studio3.1匹配的gradle版本最新4.4
2017-12-25
release3.1
2017-11-21
android make 介绍
2017-11-16
如何分析JAVA crash
2017-11-16
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人