摘要:要编写线程安全的代码,其核心在于要对状态访问操作进行管理,特别是对共享的(Shared)和可变的(Mutable)状态的访问。 Java中的主要同步机制是关键字synchronized,它提供了一种独占的加锁方式,但是同步这个术语还包括volatiel类型的变量,显式锁(Explicit Lock)以及原子变量。 1.概念说明 线程安全:当多个线程访问某个类时,不管运行时环境采用何种调度方式或者这些线程将如何交替执行,并且在主调代码中不需要任何额外的同步或协同,这个类都能表现出正确的行为,那么就称这个类是线程安全的。 原子操作:是指对于访问同一个状态的所有操作(包括该操作本身)来说,...
阅读全文
摘要:在前面的文章里面介绍了synchronized关键字的用法,这篇主要介绍volatile关键字的用法。 Java语言提供了一种稍弱的同步机制,即volatile变量,用来确保将变量的更新操作通知到其它线程。当把变量声明为volatile类型后,编译器与运行时都会注意到这个变量是共享的,因此不会将该变量上的操作与其它内存操作一起重排序。Volatile变量不会被缓存在寄存器或者其它对处理器不可见的地方,因此在读取volatile类型的变量时,总会返回最新写入的值。volatile boolean asleep;while(!asleep){ //do something} vola...
阅读全文
摘要:synchronized简介 Java提供了一种内置的锁机制来支持原子性:同步代码块(Synchronized Block)。同步代码块包括两部分:一个作为锁对象的引用,一个作为由这个锁保护的代码块。以关键字synchronized来修饰的方法就是一种横跨整个方法体的同步代码块,其中该同步代码块的锁就是方法调用所有的对象。静态的synchronized方法以class对象作为锁。synchronized(this){ //访问或修改由锁保护的共享状态} 每个Java对象都可以用做一个实现同步的锁,这些锁称为内置锁或监视锁,Java的内置锁相当于一种互斥锁,这意味着最多只有一个线...
阅读全文
摘要:Android Widget简介应用程序窗口小部件(Widget)是微型的应用程序视图,它可以被嵌入到其它应用程序中(比如桌面)并接收周期性的更新。你可以通过一个App Widget Provider来发布一个Widget。可以容纳其它App Widget的应用程序组件被称为App Widget宿主程序. 为了创建一个App Widget,你需要使用下面这些: 1.AppWidgetProviderInfo 对象(定义在XML文件里面) 描述一个App Widget元数据,比如App Widget的布局,更新频率,以及AppWidgetProvider 类。这个应该在XML里定义。 2...
阅读全文
摘要:1.首先下载actionbarsherlock和SlidingMenu源代码 由于在SlidingMenu项目中,styles.xml文件使用到了actionbarsherlock里面的主题定义,所以在使用的时候需要先导入actionbarsherlock 两个项目的源代码地址为: https://github.com/jfeinstein10/SlidingMenu http://actionbarsherlock.com/2.导入源代码 运行SlidingMneu需要使用到actionbarsherlock和SlidingMenu两个lib,所以在使用项目之前,需要先将那...
阅读全文
摘要:chown是一条在Unix系统中用于设置文件所有者和文件关联组的命令。 需要超级用户的权限才能执行此命令。只有超级用户和属于组的文件所有者才能变更文件关联组。非特权用户(非超级用户)如需要设置关联组可能需要使用chgrp命令。 # chown rob:developers strace.log把strace.log的所有者设置为rob,文件的关联组设置为developers。find指令的使用 其语法为:find [起始目录] 寻找条件 操作find /etc -name a.txt 在/etc目录及其子目录里面查找a.txt文件find-name a.txt 在当前目录及其子目录里面查找a.
阅读全文