- 博客(13)
- 资源 (3)
- 收藏
- 关注
原创 java 自动拆箱的陷阱
java 自动拆箱运用非常广泛。但是这里面有一些“陷阱”。废话不多说,来看一段代码: public static void main(String[] args) { Integer a=1; Integer b=2; Integer c=3; Integer d=3; System.out.println(c==(a+b)); System.out.println(c==d);
2015-08-02 14:49:43
777
原创 java中如何终止线程
在java早期的版本中,提供了一个终止线程的方法:stop()。但在随后的版本中,这个方法被遗弃了,因为它的中断是”立即“,这样有可能会造成数据不一致的情况。比如说在转账的过程中。因此在jdk1.5的时候,有一个方法出来解决这个问题:intertupt()。这个方法会在run()中止,【Interrupting a thread that is not alive need not have an
2015-07-22 20:08:51
924
原创 ConcurrentHashMap 源码分析
CocurrentHashMap 作用 HashTable通过对整张表加锁的方式实现并发hash查找与储存,CocurrentHashMapt通过Segment的方式可以实现相同的功能,不过效率更加高,在jdk1.6的时候,CocuentHashMap有弱一致性的问题,不过在jdk1.7的时候,这个问题已经修复了。所以是并发安全性还是性能都是非常高的。接下来我尝试基于jdk1.7
2015-07-11 12:13:44
2128
原创 java线程与锁
1 什么是线程 线程是程序中一个单一的顺序控制流程。进程内一个相对独立的、可调度的执行单元,是系统独立调度和分派CPU的基本单位指运行中的程序的调度单位。程序指令在单线程工作的情况下,表现出来的情况是顺序的。但是在多线程情况下呢?为了在底层最大限度的发挥cpu的工作效率,【有时候】我们看到的情况是程序指令并不是向我们当时书写的那样顺序。2 什么是锁 锁是逻辑一个
2015-06-29 20:29:07
650
原创 java之Integer知识整理
最近本人在看jdk源代码的时候很有感触,感叹代码是如此的精炼。就好比说这个最容易被忽视的Integer。Integer是对int 类型的封装,这点大家都知道。今天我尝试来分析其部分本人认为比较有意思的源代码。 1 如何来找一个整数中其所对应的二进制数值中,最高位1所代表的数值。例如01000。代表的是8 public static int highestOneBit(int i
2015-05-29 15:59:17
640
原创 关于 MeasureSpec,view中measure 的整理
1 MeasureSpec的实现。1.1 measure是如何实现测量控件的宽高和控件的mode。为了方便分析,我把它全部的源码,都拷出来: public static class MeasureSpec { private static final int MODE_SHIFT = 30; private static final int MOD
2015-05-11 20:00:32
1018
原创 ViewStub 源码实现
在实际开发中,有时候我们会遇到这样一种情况:就是有些布局或者view 不怎么经常用到,但是它的布局非常复杂,为了加载这种不经常用到的布局需要消耗很大的内存,而且对于配置低的手机来说,渲染也是比较慢的。碰到这样一种情况怎么办呢?有些人说直接设置View.gone。但是这仅仅是显示上处于隐藏而已,还是会占用内存空间。这时,ViewStub 就派上用场了。它可以实现动态的加载,也就是inflate()。
2015-01-06 20:07:59
1006
原创 ThreadLocal 源代码分析
在Java的多线程编程中,为保证多个线程对共享变量的安全访问,通常会使用synchronized来保证同一时刻只有一个线程对共享变量进行操作。这种情况下可以将类变量放到ThreadLocal类型的对象中,使变量在每个线程中都有独立拷贝,不会出现一个线程读取变量时而被另一个线程修改的现象。本文将对ThreadLocal源代码分析 源代码为android sdk 19.如有不对或者错误
2014-10-22 20:06:39
993
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人