02 2012 档案

摘要:一.Java的运行时数据区域 (1)程序计数器(线程私有):是一块较小的内存空间,它的作用是当前线程所执行字节码的行号指示器。字节码解释器就是通过计数器的值来获得下一条需要执行的指令。如果线程执行的是java方法,这个计数器记录的是正在执行的虚拟机字节码指令地址,如果执行的是native方法,这个区域为空。Java中的多线程为了能够获得正确的执行位置,每一个线程都需要一个独立的程序计数器,这块内存称为"线程私有内存"。这也是唯一一个java虚拟机规范没有规定任何OutOfmemroyError的区域。 (2)虚拟机栈(线程私有):它与线程的生命周期相同。虚拟机栈描述的是ja 阅读全文
posted @ 2012-02-29 21:19 focusJ 阅读(2393) 评论(1) 推荐(6)
摘要:public class ClhSpinLock { private final ThreadLocal<Node> pred; private final ThreadLocal<Node> node; private final AtomicReference<Node> tail = new AtomicReference<Node>(new Node()); public ClhSpinLock() { this.node = new ThreadLocal<Node>() { protected Node initialVa 阅读全文
posted @ 2012-02-21 09:03 focusJ 阅读(1425) 评论(3) 推荐(0)
摘要:如何使用Unsafe类呢?方式一:通过Unsafe提供的工厂方法。Unsafe unsafe = Unsafe.getUnsafe(); 通过这样的方式获得Unsafe的实力会抛出异常信息,因为在unsafe的源码中会有对安全性的检查public static Unsafe getUnsafe() { Class cc = sun.reflect.Reflection.getCallerClass(2); if (cc.getClassLoader() != null) throw new SecurityException("Unsafe")... 阅读全文
posted @ 2012-02-20 11:27 focusJ 阅读(5407) 评论(1) 推荐(1)
摘要:原文地址:http://www.odi.ch/prog/design/newbies.php 每天在写Java程序, 其实里面有一些细节大家可能没怎么注意, 这不, 有人总结了一个我们编程中常见的问题. 虽然一般没有什么大问题, 但是最好别这样做. 另外这里提到的很多问题其实可以通过Findbugs( http://findbugs.sourceforge.net/ )来帮我们进行检查出来. 字符串连接误用 错误的写法: Java代码 Strings="";for(Personp:persons){s+=","+p.getName();}s=s.subs 阅读全文
posted @ 2012-02-07 08:42 focusJ 阅读(584) 评论(0) 推荐(0)
摘要:1.线程的状态:新生(New),可运行(Runable),被阻塞(Blocked),死亡(Dead)。2.线程的优先级Java中线程一共有十个优先级1-10。Java线程的优先级依赖于宿主计算机的线程实现机制。//设置优先级的方法thread.setPriority();//三个默认的优先级MIN_PRIORITY//1NORM_PRIORITY//5MAX_PRIORITY//103.守护线程守护线程的作用就是为其他线程提供服务,如果程序中只剩下守护线程则程序即将退出。//publicclassCounterimplementsRunnable{@Overridepublicvoidrun( 阅读全文
posted @ 2012-02-05 10:17 focusJ 阅读(1351) 评论(0) 推荐(2)