关闭
当前搜索:

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

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

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

方法join的使用1,主线程启动子线程后,如果主线程项等子线程执行完成后再结束,就要用到join()方法了。测试代码:public class JoinThread extends Thread{ @Override public void run() { try { int value = (int)(Math.random()*10000); System.out.pri...
阅读(9) 评论(0)

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

通过管道进行线程间通信:字节流(PipedOutputStream,PipedInputStream) 在Java中提供了各种各样的输入/输出流Stream,其中管道流(pipeStream)是一种特殊的流,用于在不同线程间直接传送数据。一个线程发送数据到输出管道,另一个线程从输入管道中读数据。使用管道实现线程间的通信,不需要借助类似临时文件之类的东西。 测试代码: public class...
阅读(15) 评论(0)

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

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

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

2.3 volatile关键字 Volatile关键字的主要作用是使变量的多个线程间可见。还有一点就是禁止指令重排序。   使用volatile关键字增加了实例变量在多个线程之间的可见性,但是volatile不能保证原子性。 关键synchronized和volatile的比较: 1)volatile是线程同步的轻量级实现,所以volatile性能比synchronized要好,并且vo...
阅读(13) 评论(0)

Java的内存分配和管理

Java的内存分配和管理 Java内存分配时涉及的区域: 寄存器:在程序中无法控制; 栈:存放基本类型的数据和对象的引用,但是对象本身不存放在栈中,而是存放在堆中; 堆:存放用new产生的数据; 静态域:存放在对象中用static定义的静态成员; 常量池:存放常量。 2.1 内存分配中的栈和堆 1.栈 在函数中定义的一些基本类型的变量数据,还有对象的引用变量都在函数的...
阅读(16) 评论(0)

Dalvik的进程管理

一Dalvik的进程管理 1.1 Zygote 在Android中,所有的应用程序进程及系统服务进程(SystemServer)都是有Zygote进程孕育出来的。当AMS启动一个应用程序时,会通过Socket与Zygote进程通信,请求Zygote孕育出一个子进程作为即将要启动的应用程序的进程。 Andorid是基于Linux内核的,在Linux中,所有的进程都是init进程直接或间接孕育出...
阅读(18) 评论(0)

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

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

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

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

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

一,Java多线程技能 1.1  进程和多线程的概念 可以把一个正在操作系统中运行的程序理解为一个“进程”。进程是受操作系统管理的基本运行单元。   线程可以理解为在进程中独立运行的子任务。当打开浏览器,下载文件的同时,还可以打开看视频,这些功能就对应了多个线程在后台运行。使用多线程就是在使用异步,因为每个线程被调用的时机是随机的。   1.2  继承Thread类,实现Runnabl...
阅读(24) 评论(0)

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

ViewTree的绘图遍历 绘图遍历也就是ViewTree遍历过程的最后一步。这个过程有3个核心的步骤: 1)canvas= mSurface.lockCanvas(dirty); 2)mView.draw(canvas); 3)surface.unlockCanvasAndPost(canvas); 和View直接交互的是canvas,可以认为是作画的工具集。应用程序跟surf...
阅读(25) 评论(0)

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

转自:http://blog.chinaunix.net/uid-7213935-id-5750899.html   在android6.0以后的版本,google采用了SELinux的文件访问安全策略,想比较以前,绝对提高了文件的安全,不像以前那样, 对文件访问可以是无条件的。本篇文章就分享下常用的一些安全策略。 1. linux传统 设备文件访问控制方法  传统的 Linux设备文件...
阅读(41) 评论(0)
    个人资料
    • 访问:35831次
    • 积分:1724
    • 等级:
    • 排名:千里之外
    • 原创:133篇
    • 转载:38篇
    • 译文:0篇
    • 评论:9条
    最新评论