lin20080410的专栏

从站在巨人的肩上,向成为巨人迈进... 互相学习!

排序:
默认
按更新时间
按访问量

多线程编程-单例模式的实现方式(九)

1,饿汉式,也叫立即加载,就是使用类的时候已经将对象创建完毕,常用的方法是直接new实例化。 public class SingletonObject { private static SingletonObject sObj = new SingletonObject(); priva...

2018-01-22 11:29:15

阅读数:79

评论数:0

多线程编程-ReentrantReadWriteLock(八)

ReentrantReadWriteLock类1,ReentrantLock类具有完全互斥排他的效果,即同一时刻只有一个线程在执行ReentrantLock().lock()方法后面的代码。这样做虽然保证了实例变量的线程安全性,到时效率较低。ReentrantReadWriteLock类,包括两个...

2018-01-19 15:50:53

阅读数:58

评论数:0

多线程编程-ReentrantLock(八)

1,在java多线程中,可以使用synchronized关键字实现线程间同步互斥,也可以使用ReentrantLock达到同样的效果。ReentrantLock拥有一些扩展功能,如:等待可中断,可实现公平锁,锁可以绑定多个条件,尝试锁定等。测试代码:public class MyService {...

2018-01-19 10:50:48

阅读数:67

评论数:0

多线程编程-线程间通信-ThreadLocal(七)

1,ThreadLocal类主要解决的是每个线程绑定自己的值,这里存储的是每个线程私有的数据,解决了变量在不同线程间的隔离性。测试代码:public class Tools { public static ThreadLocal tl = new ThreadLocal(); }public c...

2018-01-18 10:16:02

阅读数:68

评论数:0

多线程编程-线程间通信-join方法的使用(六)

方法join的使用1,主线程启动子线程后,如果主线程项等子线程执行完成后再结束,就要用到join()方法了。测试代码:public class JoinThread extends Thread{ @Override public void run() { try { int va...

2018-01-17 17:30:59

阅读数:90

评论数:0

多线程编程-线程间通信.管道(五)

通过管道进行线程间通信:字节流(PipedOutputStream,PipedInputStream) 在Java中提供了各种各样的输入/输出流Stream,其中管道流(pipeStream)是一种特殊的流,用于在不同线程间直接传送数据。一个线程发送数据到输出管道,另一个线程从输入管道中读数据。...

2018-01-17 14:58:50

阅读数:108

评论数:0

多线程编程-线程间通信.wait/notify(四)

多个线程通过共同访问一个变量的方式,也可以实现线程间通信,通过这种方式,线程要主动去读取一个共享变量,一方面需要加同步,另一方面花费了读取变量的时间,但是读取到的值是不是要想要的,并不能确定。而等待/通知机制,可以更好解决线程间数据读取时机的问题。1,不使用等待/通知机制的线程间通信测试代码:pu...

2018-01-16 17:36:27

阅读数:90

评论数:0

多线程编程-volatile关键字(三)

2.3 volatile关键字 Volatile关键字的主要作用是使变量的多个线程间可见。还有一点就是禁止指令重排序。   使用volatile关键字增加了实例变量在多个线程之间的可见性,但是volatile不能保证原子性。 关键synchronized和volatile的比较: 1)v...

2018-01-15 16:00:26

阅读数:53

评论数:0

Java的内存分配和管理

Java的内存分配和管理 Java内存分配时涉及的区域: 寄存器:在程序中无法控制; 栈:存放基本类型的数据和对象的引用,但是对象本身不存放在栈中,而是存放在堆中; 堆:存放用new产生的数据; 静态域:存放在对象中用static定义的静态成员; 常量池:存放常量。 内存分配...

2018-01-14 22:46:13

阅读数:78

评论数:0

Android 虚拟机的进程管理

一Android 虚拟机的进程管理 Android 虚拟机进程管理是依赖linux的进程体系结构的,要为应用程序创建一个进程,它会使用linux的fork机制来复制一个进程(复制进程比创建进程更高效) 。执行这个操作的就是zygote。 zygote是一个虚拟机进程,也是一个虚拟机实例的孵化器。当...

2018-01-13 22:47:50

阅读数:103

评论数:0

多线程编程-synchronized语句块(二)

2.2 synchronized 同步语句块 2.2.1 使用synchronized同步方法时,如果一个线程调用同步方法执行一个长时间的任务,那么其他线程必须等待很长时间,这时用同步语句块可提高执行效率。 同步方法耗时测试代码: public class Task { private...

2018-01-12 14:36:57

阅读数:76

评论数:0

多线程编程-Synchronized同步方法(二)

2.1 synchronized 同步方法     “非线程安全”会在多个线程对同一个对象中的实例变量进行并发访问时发生,产生的后果就是“脏读”,也就是读到的数据其实是被更改过的。     “线程安全”就是获取的实例变量的值是经过同步处理的,不会出现脏读的现象。   2.1.1 方法内的变...

2018-01-10 15:40:28

阅读数:124

评论数:0

多线程编程-Java线程概述(一)

一,Java多线程技能1.1  进程和多线程的概念可以把一个正在操作系统中运行的程序理解为一个“进程”。进程是受操作系统管理的基本运行单元。 线程可以理解为在进程中独立运行的子任务。当打开浏览器,下载文件的同时,还可以打开看视频,这些功能就对应了多个线程在后台运行。使用多线程就是在使用异步,因为每...

2018-01-09 10:12:25

阅读数:85

评论数:0

Android GUI系统-ViewTree的绘图遍历(六)

ViewTree的绘图遍历 绘图遍历也就是ViewTree遍历过程的最后一步。这个过程有3个核心的步骤: 1)canvas= mSurface.lockCanvas(dirty); 2)mView.draw(canvas); 3)surface.unlockCanvasAndPost(ca...

2018-01-07 20:48:50

阅读数:79

评论数:0

基于android6.0版本的SELinux文件访问安全策略

转自:http://blog.chinaunix.net/uid-7213935-id-5750899.html   在android6.0以后的版本,google采用了SELinux的文件访问安全策略,想比较以前,绝对提高了文件的安全,不像以前那样, 对文件访问可以是无条件的。本篇文章就分...

2018-01-02 16:41:52

阅读数:108

评论数:0

Android GUI系统-ViewTree遍历过程(五)

ViewTree的遍历过程performTraversals。遍历过程主要对应三个函数performMeasure(计算大小),perforLayout(计算位置),performDraw(绘制内容)。具体看下这三个步骤执行的条件,及怎么执行的?1)performMeasureprivate vo...

2017-12-28 21:25:17

阅读数:109

评论数:0

深入理解Java虚拟机-Java内存模型与线程(12)

深入理解Java虚拟机 学习笔记 第十二章 java内存模型与线程 在许多情况下,让计算机同时去做几件事情,不仅是因为计算机的运算能力强大了,还有一个很重要的原因是计算机的运算速度与它的存储和通信子系统速度的差距太大,大量的时间都花费在磁盘I/O、网络通信或者数据库访问上。   12....

2017-12-28 10:56:41

阅读数:98

评论数:0

Android GUI系统-ViewTree的遍历(四)

那些情况会引起ViewTree的遍历 1)应用程序刚启动时,会在构造出整棵ViewTree后,执行第一次遍历。 public void setView(View view, WindowManager.LayoutParams attrs, View panelParentView) @...

2017-12-26 07:09:08

阅读数:95

评论数:0

Android GUI系统-ViewTree的管理者(三)

作为ViewTree的管理者ViewRoot,是怎么工作的。一,ViewRootImpl跟WMS间的通信ViewRootImpl.java在构造的时候,需要建立跟WMS的通信的双向通道:ViewRootImpl –>WMS:IwindowSessionWMS →ViewRoo...

2017-12-24 18:16:01

阅读数:93

评论数:0

Android GUI系统-ViewTree的创建(二)

View树的创建过程当AMS通知应用进程来启动一个Activity任务时,最终这个请求会转化为ActivityThread中的一个消息LAUNCH_ACTIVITY,同类型的消息还是RESUME_ACTIVITY,PAUSE_ACTIVITY等。主线程ActivityThread对这个LAUNCH...

2017-12-21 22:38:36

阅读数:111

评论数:0

提示
确定要删除当前文章?
取消 删除
关闭
关闭