Java-开发心得
文章平均质量分 73
Victor_Zhang_SH
这个作者很懒,什么都没留下…
展开
-
Java并发基础知识
Java并发(Executor框架和多线程基础)Thread与Runable如何实现多线程Java 5以前实现多线程有两种实现方法:一种是继承Thread类;另一种是实现Runnable接口。两种方式都要通过重写run()方法来定义线程的行为,推荐使用后者,因为Java中的继承是单继承,一个类有一个父类,如果继承了Thread类就无法再继承其他类了,显然使用Runnable接口更为灵活。实现Runn原创 2016-12-08 19:38:54 · 452 阅读 · 0 评论 -
深入理解 Synchronized
synchronized在并发编程中,多线程同时并发访问的资源叫做临界资源,当多个线程同时访问对象并要求操作相同资源时,分割了原子操作就有可能出现数据的不一致或数据不完整的情况,为避免这种情况的发生,我们会采取同步机制,以确保在某一时刻,方法内只允许有一个线程。采用synchronized修饰符实现的同步机制叫做互斥锁机制,它所获得的锁叫做互斥锁。每个对象都有一个monitor(锁标记),当线程拥有原创 2016-12-16 16:50:15 · 591 阅读 · 0 评论 -
深入理解 String AOP
什么是AOPAOP(Aspect-OrientedProgramming,面向方面编程),可以说是OOP(Object-Oriented Programing,面向对象编程)的补充和完善。OOP引入封装、继承和多态性等概念来建立一种对象层次结构,用以模拟公共行为的一个集合。当我们需要为分散的对象引入公共行为的时候,OOP则显得无能为力。也就是说,OOP允许你定义从上到下的关系,但并不适合定义从左到右原创 2016-12-09 20:59:00 · 1156 阅读 · 0 评论 -
从源码分析 HashMap
HashMapHashMap和Hashtable的区别:Hashtable的大部分方法做了同步,HashMap没有,因此,HashMap不是线程安全的。Hashtable不允许key或者value使用null值,而HashMap可以。在内部算法上,它们对key的hash算法和hash值到内存索引的映射算法不同。HashMap的实现原理简单说,HashMap就是将key做hash算法,然后将h原创 2016-12-08 21:29:12 · 325 阅读 · 0 评论 -
Java 内存区域与内存溢出
内存区域Java虚拟机在执行Java程序的过程中会把他所管理的内存划分为若干个不同的数据区域。Java虚拟机规范将JVM所管理的内存分为以下几个运行时数据区:程序计数器,Java虚拟机栈,本地方法栈,Java堆,方法区。下面详细阐述各数据区所存储的数据类型。程序计数器(Program Counter Register)一块较小的内存空间,它是当前线程所执行的子节码的行号指示器,字节码解释器工作时通过原创 2016-12-08 21:26:26 · 486 阅读 · 0 评论 -
LinkedHashMap 源码剖析
LinkedHashMap是HashMap的子类,与HashMap有着同样的存储结构,但它加入了一个双向链表的头结点,将所有put到LinkedHashmap的节点一一串成了一个双向循环链表,因此它保留了节点插入的顺序,可以使节点的输出顺序与输入顺序相同。LinkedHashMap可以用来实现LRU算法(这会在下面的源码中进行分析)。LinkedHashMap同样是非线程安全的,只在单线程环境下使用原创 2016-12-08 19:44:50 · 481 阅读 · 0 评论 -
生产者和消费者问题
package 生产者消费者;public class ProducerConsumerTest { public static void main(String[] args) { PublicResource resource = new PublicResource(); new Thread(new ProducerThread(resource)).s原创 2016-12-08 19:42:59 · 315 阅读 · 0 评论 -
volatile变量修饰符
volatile用处说明在JDK1.2之前,Java的类型模型实现总是从主存(即共享内存)读取变量,是不需要进行特别的注意的。而随着JVM的成熟和优化,现在在多线程环境下volatile关键字的使用变的非常重要。在当前的Java内存模型下,线程可以把变量保存在本地内存(比如机器的寄存器)中,而不是直接在主存中进行读写。这就可能造成一个线程在主存中修改了一个变量的值,而另一个线程还在继续使用它在寄存器原创 2016-12-08 19:41:32 · 353 阅读 · 0 评论 -
Thread和Runnable实现多线程的区别
Java中实现多线程有两种方法:继承Thread、实现Runnable接口,在程序开发中只要是多线程,肯定永远以实现Runnable接口为主,因为实现Runnable接口相比继承Thread类有如下优势:可以避免由于Java的单继承特性而带来的局限增强程序的健壮性,代码能够被多个线程共享,代码与数据是独立的适合多个相同程序的线程区处理同一资源的情况首先通过Thread类实现class MyT原创 2016-12-08 19:40:24 · 289 阅读 · 0 评论 -
深入剖析 JVM
JVM内存模型以及分区,需要详细到每个区放什么。http://blog.csdn.net/ns_code/article/details/17565503JVM所管理的内存分为以下几个运行时数据区:程序计数器、Java虚拟机栈、本地方法栈、Java堆、方法区。程序计数器(Program Counter Register)一块较小的内存空间,它是当前线程所执行的字节码的行号指示器,字节码解释器工作时通原创 2016-12-16 16:53:23 · 483 阅读 · 0 评论