共 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...
Java并发编程:synchronized.1.当一个线程正在访问一个对象的synchronized方法时,其它线程不能访问该对象的其它synchronized方法。2.当一个线程正在访问一个对象的synchronized方法时,其它线程可以访问该对象的其它非synchronized方法。3.当一个线程正在访问一个对象的synchronized方法时,其它线程可以访问其它对象的synchronized方法或非sy...
Java集合框架是Java变成语言的基础,自然也是Java程序员面试过程中的一个重点内容,下边我们就来说一下有关Java集合的常见问题以及答案。1.什么是Java集合API?具体来说,Java集合框架有6个集合接口,最基本的是Collection接口,由三个接口Set、List、SortedSet继承,另外两个接口是Map、SortedMap,这两个接口不继承Collection,表示映射而不...
这是最基础的算法,就像它名字一样,算法分为“标记”和“清除”两个阶段:首先标记处所有需要回收的对象(如哪些内存需要回收所描述的对象),对标记完成后统一回收所有被标记的对象,如下图所示:由于CMS并发清理阶段用户线程还在运行着,伴随着程序运行自然就还会有新的垃圾不断产生,这部分垃圾出现在标记过程之后,CMS无法在当次收集中处...
java对象的强引用,软引用,弱引用和虚引用。如果内存空间足够,垃圾回收器就不会回收它,如果内存空间不足了,就会回收这些对象的内存。软引用可以和一个引用队列(ReferenceQueue)联合使用,如果软引用所引用的对象被垃圾回收,JAVA虚拟机就会把这个软引用加入到与之关联的引用队列中。在垃圾回收器线程扫描它 所管辖的内存区域的过程中,一...
// 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...
ArrayList简介。我们先总览下ArrayList的构造函数和API/****************** ArrayList中的构造函数 ***************/// 默认构造函数ArrayList// capacity是ArrayList的默认容量大小。1). ArrayList实际上是通过一个数组去保存数据的,当我们构造ArrayList时,如果使用默认构造函数,最后ArrayList的默认容量大小是10。2). 当ArrayList容量不...
什么是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,...
深入理解Java之线程池(下)newFixedThreadPool创建的线程池corePoolSize和maximumPoolSize值是相等的,它使用的LinkedBlockingQueue;newCachedThreadPool将corePoolSize设置为0,将maximumPoolSize设置为Integer.MAX_VALUE,使用的SynchronousQueue,也就是说来了任务就创建线程运行,当线程空闲超过60秒,就销毁线程。一般需要根据任务的类...
这里有一个非常巧妙的设计方式,假如我们来设计线程池,可能会有一个任务分派线程,当发现有线程空闲时,就从任务缓存队列中取一个任务交给空闲线程执行。如果线程池中的线程数量大于 corePoolSize时,如果某线程空闲时间超过keepAliveTime,线程将被终止,直至线程池中的线程数目不大于corePoolSize;从执行结果可以看出,当线程池中线程的数...
帮助 | 留言交流 | 联系我们 | 服务条款 | 下载网文摘手 | 下载手机客户端
北京六智信息技术股份有限公司 Copyright© 2005-2024 360doc.com , All Rights Reserved
京ICP证090625号 京ICP备05038915号 京网文[2016]6433-853号 京公网安备11010502030377号
返回
顶部