JAVA设计模式之单例模式

概念:   java中单例模式是一种常见的设计模式,单例模式的写法有好几种,这里主要介绍三种:懒汉式单例、饿汉式单例、登记式单例。   单例模式有以下特点:   1、单例类只能有一个实例。   2、单例类必须自己创建自己的唯一实例。   3、单例类必须给所有其他对象提供这一实例。   ...

2016-02-28 23:37:00

阅读数 203

评论数 0

对lrucache的解读

1、内存缓存与内存的关系        内存缓存跟计算机组成原理的缓存没有关系。        它是从内存专门划一部分出来,用作缓存并以键值对的方式存储体积比较大的对象。比如取内存的八分之一作为缓存。 2、lrucache为什么拥有put和get这种哈希表类型的方法 ...

2016-02-27 19:50:32

阅读数 302

评论数 0

Android 图片缓存之内存缓存技术LruCache

转自:http://blog.chinaunix.net/uid-26930580-id-4138306.html 在Android中,有一个叫做LruCache类专门用来做图片缓存处理的。 它有一个特点,当缓存的图片达到了预先设定的值的时候,那么近期使用次数最少的图片就会被回收掉。 步骤:...

2016-02-27 19:14:18

阅读数 636

评论数 0

LruCache实现原理

概念: LruCache  什么是LruCache?  LruCache实现原理是什么? 这两个问题其实可以作为一个问题来回答,知道了什么是 LruCache,就只然而然的知道 LruCache 的实现原理;Lru的全称是Least Recently Used ,近期最少使用的!所...

2016-02-27 18:48:40

阅读数 268

评论数 0

泛型的内部原理:类型擦除以及类型擦除带来的问题

一、Java泛型的实现方法:类型擦除前面已经说了,Java的泛型是伪泛型。为什么说Java的泛型是伪泛型呢?因为,在编译期间,所有的泛型信息都会被擦除掉。正确理解泛型概念的首要前提是理解类型擦出(type erasure)。Java中的泛型基本上都是在编译器这个层次来实现的。在生成的Java字节码...

2016-02-27 12:37:27

阅读数 1591

评论数 0

双重检查锁定(double-checked locking)与volatile实现多线程下的单例模式

单例模式有如下实现方式:[java] view plain copypackage com.zzj.pattern.singleton;    public class Singleton {      private static Singleton instance;        priva...

2016-02-27 12:32:51

阅读数 272

评论数 0

Java内存区域

本文主要依据《深入理解Java虚拟机》这本书写的,有批评和建议请留言!       Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。这些区域都有各自的用途,以及创建和销毁的时间,有的区域随着虚拟机进程的启动而存在,有些区域则依赖用户线程的启动和结束而建立和销毁...

2016-02-27 11:27:48

阅读数 1495

评论数 0

Java内存模型 (java memory model,JMM)

转载自:浅析Java内存模型概述Java内存模型的主要目标是定义程序中各个变量的访问规则,即在虚拟机中将变量存储到内存和从内存中取出变量这样的底层细节。此处的变量是线程共享的,存在竞争问题的。Java内存模型规定了所有的变量都存储在主内存,每条线程还有自己的工作内存中保存了被该线程使用到的变量的主...

2016-02-27 11:21:51

阅读数 192

评论数 0

Java虚拟机结构

一、JVM主要的结构如下:二、各个区域功能介绍1)、方法区(Method Area):        (1)用于存储虚拟机加载的类信息、常量、静态变量等,是各个线程共享的内存区域;        (2)默认最小值为16MB,最大值为64MB,可以通过-XX:PermSize 和 -XX:MaxPe...

2016-02-27 11:03:31

阅读数 1450

评论数 0

LinkedBlockingDeque源码分析

双向链表的Node节点 /** Doubly-linked list node class */ static final class Node<E> { /** * The item, or null if this no...

2016-02-25 19:02:01

阅读数 2714

评论数 0

线程与任务(Thread与Runnable)

实现runnable接口的类都是任务类,它在run()内部定义任务逻辑。 把任务类对象作为参数创建线程实例,线程就会执行任务。 timer是线程,而timertask是任务。 创建一个timer,timer内部会自动创建一个线程。 executors是executor的工厂类。 execut...

2016-02-25 18:57:03

阅读数 251

评论数 0

ThreadLocal源码分析

概述 一个线程可以设置多个线程局部变量,多个线程局部变量ThreadLocal保存在Thread#ThreadLocalMap中。注意,通过ThreadLocal#get()方法保存的值,并不是保存在ThreadLocal的内部变量中,而是以该ThreadLocal为key(其实是以WeakRe...

2016-02-25 18:46:21

阅读数 221

评论数 0

SynchronousQueue源码分析

概述 SQ 为等待过程中的生产者或消费者线程提供可选的公平策略(默认非公平模式)。非公平模式通过栈(LIFO)实现,公平模式通过队列(FIFO)实现。使用的数据结构是双重队列(Dual queue)和双重栈(Dual stack)。FIFO通常用于支持更高的吞吐量,LIFO则支持更高的线程局部存...

2016-02-25 18:04:01

阅读数 439

评论数 0

LinkedTransferQueue源码分析

put方法 /** * Inserts the specified element at the tail of this queue. * As the queue is unbounded, this method will never block. * ...

2016-02-25 17:49:59

阅读数 1051

评论数 0

ThreadPoolExecutor源码分析

概述 构造函数 /** * Creates a new {@code ThreadPoolExecutor} with the given initial * parameters. * * @param corePoolSize the number...

2016-02-25 17:40:32

阅读数 322

评论数 0

提示
确定要删除当前文章?
取消 删除