adm1989

导航

随笔分类 -  Java知识点

(Java 多线程系列)java volatile详解
摘要:在前面的文章里面介绍了synchronized关键字的用法,这篇主要介绍volatile关键字的用法。 Java语言提供了一种稍弱的同步机制,即volatile变量,用来确保将变量的更新操作通知到其它线程。当把变量声明为volatile类型后,编译器与运行时都会注意到这个变量是共享的,因此不会将该变量上的操作与其它内存操作一起重排序。Volatile变量不会被缓存在寄存器或者其它对处理器不可见的地方,因此在读取volatile类型的变量时,总会返回最新写入的值。volatile boolean asleep;while(!asleep){ //do something} vola... 阅读全文

posted @ 2013-08-31 16:27 adm1989 阅读(2242) 评论(0) 推荐(0) 编辑

Java 多线程系列
摘要:要编写线程安全的代码,其核心在于要对状态访问操作进行管理,特别是对共享的(Shared)和可变的(Mutable)状态的访问。 Java中的主要同步机制是关键字synchronized,它提供了一种独占的加锁方式,但是同步这个术语还包括volatiel类型的变量,显式锁(Explicit Lock)以及原子变量。 1.概念说明 线程安全:当多个线程访问某个类时,不管运行时环境采用何种调度方式或者这些线程将如何交替执行,并且在主调代码中不需要任何额外的同步或协同,这个类都能表现出正确的行为,那么就称这个类是线程安全的。 原子操作:是指对于访问同一个状态的所有操作(包括该操作本身)来说,... 阅读全文

posted @ 2013-08-31 16:27 adm1989 阅读(292) 评论(0) 推荐(0) 编辑

(Java 多线程系列)java synchronized详解
摘要:synchronized简介 Java提供了一种内置的锁机制来支持原子性:同步代码块(Synchronized Block)。同步代码块包括两部分:一个作为锁对象的引用,一个作为由这个锁保护的代码块。以关键字synchronized来修饰的方法就是一种横跨整个方法体的同步代码块,其中该同步代码块的锁就是方法调用所有的对象。静态的synchronized方法以class对象作为锁。synchronized(this){ //访问或修改由锁保护的共享状态} 每个Java对象都可以用做一个实现同步的锁,这些锁称为内置锁或监视锁,Java的内置锁相当于一种互斥锁,这意味着最多只有一个线... 阅读全文

posted @ 2013-08-31 16:27 adm1989 阅读(1360) 评论(0) 推荐(0) 编辑

关于Java正则表达式的一些理解
摘要:正则表达式(regular expression)是一种可以在许多现代应用程序和编程语言中使用的特殊形式的代码模式。可以使用它们来验证输入是否符合给定的文本模式,在一大段文字中查找该模式的文本,用其它文本来替换匹配该模式的文本或者重新组织匹配文本的一部分,把一块文本划分成一系列更小的文本。在Java语言中,从jdk1.4中加入了java.util.regex包提供对正则表达式的支持,而且Java.lang.String类中的replaceAll和split函数也是调用的正则表达式来实现的。在java.util.regex包中,常用到的类是Pattern和Matcher。典型的调用顺序为:Pat 阅读全文

posted @ 2013-01-14 18:53 adm1989 阅读(2478) 评论(0) 推荐(1) 编辑

简单JNI的使用--在Java中调用C库函数
摘要:在Android Framework中,需要提供一种媒介或桥梁,将Java层(上层)与C/C++(底层)有机地联系起来,使得它们相互协调,共同完成某些任务。在这两层之间充当连接桥梁这一角色的就是Java本地接口(JNI,Java Native Interface),它允许Java代码与基于C/C++编写的应用和库进行交互操作。 JNI提供了一系列接口,允许Java类与使用C/C++等其它编程语言(在JNI中,这些语言被称为本地语言)编写的应用程序、模块、库进行交互操作。比如,在Java类中使用C语言库中中的特定函数,或在C语言里面使用Java类库,都需要借助JNI来完成。 通常会在下列... 阅读全文

posted @ 2013-01-07 15:45 adm1989 阅读(3686) 评论(0) 推荐(1) 编辑

文件锁(Filelock)
摘要:文件锁在解决Bug的过程中,遇到过这种问题:就是文件正在使用的过程,从文件管理器里面将文件删除,这样可能会导致一些不可预料的问题。在查阅了Java中File类的相关函数之后,在windows下面,可以使用File.rename()或 File.delete(),但是在Linux下面,这种方法也不行,文件还是被直接删除了,发现也没有什么很好的标记可以说明一个文件正在被使用中。最后,发现文件锁(FileLock)可以给文件一个锁,另一个程序在使用的时候判断文件是否有文件锁,就可以判断出文件是否正在使用。但是这种方法,在卸载SD卡的时候,好像接收不到SD卡卸载广播,不知道是什么原因,最后还是使用的S 阅读全文

posted @ 2012-11-21 19:20 adm1989 阅读(4406) 评论(2) 推荐(0) 编辑