共 11 篇文章 |
|
2、Volatile1)Volatile变量不具有原子性。但Volatile变量不提供原子操作的保证。(下文使用的源码均来自JDK7) 1 private volatile int value; 2 3 /** 4 * Gets the current value. 5 * 6 * @return the current value 7 */ 8 public final int get { 9 return value;10 }11 12 /**13 * Sets to the given value.14 *15 * @param newValue th... 阅79 转0 评0 公众公开 16-07-21 09:48 |
Java并发编程:synchronized.1.当一个线程正在访问一个对象的synchronized方法时,其它线程不能访问该对象的其它synchronized方法。2.当一个线程正在访问一个对象的synchronized方法时,其它线程可以访问该对象的其它非synchronized方法。3.当一个线程正在访问一个对象的synchronized方法时,其它线程可以访问其它对象的synchronized方法或非sy... 阅86 转1 评0 公众公开 16-07-20 08:39 |
Java集合框架是Java变成语言的基础,自然也是Java程序员面试过程中的一个重点内容,下边我们就来说一下有关Java集合的常见问题以及答案。1.什么是Java集合API?具体来说,Java集合框架有6个集合接口,最基本的是Collection接口,由三个接口Set、List、SortedSet继承,另外两个接口是Map、SortedMap,这两个接口不继承Collection,表示映射而不... 阅386 转2 评0 公众公开 16-07-10 22:45 |
这是最基础的算法,就像它名字一样,算法分为“标记”和“清除”两个阶段:首先标记处所有需要回收的对象(如哪些内存需要回收所描述的对象),对标记完成后统一回收所有被标记的对象,如下图所示:由于CMS并发清理阶段用户线程还在运行着,伴随着程序运行自然就还会有新的垃圾不断产生,这部分垃圾出现在标记过程之后,CMS无法在当次收集中处... 阅199 转1 评0 公众公开 16-06-29 22:39 |
java对象的强引用,软引用,弱引用和虚引用。如果内存空间足够,垃圾回收器就不会回收它,如果内存空间不足了,就会回收这些对象的内存。软引用可以和一个引用队列(ReferenceQueue)联合使用,如果软引用所引用的对象被垃圾回收,JAVA虚拟机就会把这个软引用加入到与之关联的引用队列中。在垃圾回收器线程扫描它 所管辖的内存区域的过程中,一... 阅23 转0 评0 公众公开 16-06-22 09:32 |
// prime holds a strong reference – line 2SoftReference soft = new SoftReference(prime) ;//soft reference variable has SoftReference to Counter Object created at line 2prime = null; // now Counter object is eligible for garbage collection but only be collected when JVM absolutely needs memory.虚引用是java.lang.ref pa... 阅16 转0 评0 公众公开 16-06-22 09:31 |
ArrayList简介。我们先总览下ArrayList的构造函数和API/****************** ArrayList中的构造函数 ***************/// 默认构造函数ArrayList// capacity是ArrayList的默认容量大小。1). ArrayList实际上是通过一个数组去保存数据的,当我们构造ArrayList时,如果使用默认构造函数,最后ArrayList的默认容量大小是10。2). 当ArrayList容量不... 阅40 转0 评0 公众公开 16-05-14 10:46 |
什么是Git?How branching/merging works for git.下图是git的原理图:不同于之前的方式,git在Client端也有database,可以认为是在本地的一个缓存。2) What is git’s Version Database?(1)Commits:真正的 git commits。Git在add的时候没有把文件加入repository,但是Blob已经存在了。下图是Git在commit时候的snapshot:git HEAD指的是ref,... 阅212 转1 评0 公众公开 16-05-13 09:18 |
深入理解Java之线程池(下)newFixedThreadPool创建的线程池corePoolSize和maximumPoolSize值是相等的,它使用的LinkedBlockingQueue;newCachedThreadPool将corePoolSize设置为0,将maximumPoolSize设置为Integer.MAX_VALUE,使用的SynchronousQueue,也就是说来了任务就创建线程运行,当线程空闲超过60秒,就销毁线程。一般需要根据任务的类... 阅23 转0 评0 公众公开 16-04-24 23:23 |
这里有一个非常巧妙的设计方式,假如我们来设计线程池,可能会有一个任务分派线程,当发现有线程空闲时,就从任务缓存队列中取一个任务交给空闲线程执行。如果线程池中的线程数量大于 corePoolSize时,如果某线程空闲时间超过keepAliveTime,线程将被终止,直至线程池中的线程数目不大于corePoolSize;从执行结果可以看出,当线程池中线程的数... 阅123 转1 评0 公众公开 16-04-24 23:23 |