Java基础
把酒作清欢
心有一片海!
展开
-
静态方法与非静态方法的区别
原文在这里!使用static修饰的静态方法是属于整个类的类方法,它在内存中的代码段会随类的定义而被分配和装载;而非静态方法是属于具体对象的方法,当这个对 象创建时,在对象的内存中会拥有此方法的专用代码段。在引用静态方法时,可以使用对象名加前缀,也可以使用类名加前缀。eg. classA 实例化了一个对象objectA,classA中定义了一个静态方法:run( ). 则可使用 clas转载 2016-03-29 23:43:29 · 593 阅读 · 0 评论 -
Java 反射机制理解
原文在这里Java的反射机制是Java特性之一,反射机制是构建框架技术的基础所在。灵活掌握Java反射机制,对大家以后学习框架技术有很大的帮助。 那么什么是Java的反射呢? 大家都知道,要让Java程序能够运行,那么就得让Java类要被Java虚拟机加载。Java类如果不被Java虚拟机加载,是不能正常运行的。现在我们运行的所有的程序都是在编译期的时候就已经知道转载 2016-03-23 03:13:15 · 399 阅读 · 0 评论 -
线程安全与可重入
原文在这里~线程安全与可重入定义 线程安全:被多个并发的线程反复调用时,他会产生正确的结果。 可重入:当被多个线程调用的时候,不会引用任何共享数据。 Remark:任何线程不安全问题的根源都是“共享数据”。所以,不使用任何共享数据的函数(即:可重入函数)肯定是线程安全的。但这并不等于说,线程安全函数就是可重入函数。为什么呢?因为:即使有线程有共享数据,线程被并转载 2016-04-05 23:10:07 · 367 阅读 · 0 评论 -
《JAVA并发编程实践》学习笔记(第二章)
最近在看《JAVA并发编程实践》这本书,此篇文章为学习笔记~,目的在于记录看书过程中遇到的知识点,有时间进行进一步整理。学习知识,与君共勉!第二章 线程安全1. 一个类是线程安全的,是指被多个线程访问时,类可以支持进行正确的行为。2.3. 对于线程安全类的实例进行顺序或并发的一系列操作,都不会导致实例处于无效状态;4. 线程安全的类封装了任何必要的同步,因原创 2016-04-05 23:53:00 · 636 阅读 · 0 评论 -
原子性与可见性
原子性原子是世界上的最小单位,具有不可分割性。比如 a=0;(a非long和double类型) 这个操作是不可分割的,那么我们说这个操作时原子操作。再比如:a++; 这个操作实际是a = a + 1;是可分割的,所以他不是一个原子操作。非原子操作都会存在线程安全问题,需要我们使用同步技术(sychronized)来让它变成一个原子操作。一个操作是原子操作,那么我们称它具有原子性。java的原创 2016-04-06 01:13:05 · 531 阅读 · 0 评论 -
《JAVA并发编程实践》学习笔记(第三章)
第三章:共享对象(Sharing Objects)3.1 可见性 为了确保跨线程写入的内存可见性,你必须使用同步机制。 重排序:在单个线程中,只要重排序不会对结果产生影响,那么就不能保证其中的操作一定按照程序写定的顺序执行——即使重排序对于其他线程来说会产生明显的影响。 在没有同步的情况下,编译器,处理器,运行时安排操作的执行顺序可能完全出人意料原创 2016-04-08 02:16:03 · 623 阅读 · 1 评论 -
《JAVA并发编程实践》学习笔记(第四.五章)
第四章 组合对象4.1 设计线程安全的类 设计线程安全类的过程应包括下面3个基本要素:1. 确定对象状态是由哪些变量构成的;2. 确定限制状态变量的不变约束;3. 指定一个管理并发访问对象状态的策略;同步策略(synchronization policy)定义了对象如何协调对其状态的访问,并不会违反它的不变约束或者后验条件。4.1.1 收集原创 2016-04-08 04:02:21 · 534 阅读 · 0 评论 -
《JAVA并发编程实践》学习笔记(第六.七章)
第2部分构建并发应用程序第6章 任务执行 大多数并发应用程序都是围绕执行任务(task)进行管理。所谓任务就是抽象、离散的工作单元(unit of work)。6.1 在线程中执行任务 在围绕任务来管理应用程序时,第一步要指明一个清晰的任务边界(task boundaries)。理想情况下,任务是独立的活动:它的工作并不依赖于其他任务的状态、结果或者边界原创 2016-04-08 22:37:24 · 410 阅读 · 0 评论 -
《JAVA并发编程实践》学习笔记(第八.九章)
第8章 应用线程池8.1 任务与执行策略间的隐形耦合 一些任务具有这样的特征:需要或者排斥某种特定的执行策略。对其他任务具有依赖性的任务,就会要求线程池足够大,来保证它所依赖任务不必排队或者不被拒绝;采用线程池的任务需要顺序地执行。把这些需求都写入文档,这样将来的维护者就不会使用一个与原先相悖的执行策略,而破坏安全性或活跃度了。8.1.1线程饥饿死锁 在线程原创 2016-04-08 23:49:58 · 450 阅读 · 0 评论 -
classloader加载class的流程及自定义ClassLoader
/*** 转载请注明作者longdick http://longdick.iteye.com**/ java应用环境中不同的class分别由不同的ClassLoader负责加载。一个jvm中默认的classloader有Bootstrap ClassLoader、Extension ClassLoader、App ClassL转载 2016-03-28 11:14:30 · 433 阅读 · 0 评论 -
Java NIO和IO的主要区别
当学习了Java NIO和IO的API后,一个问题马上涌入脑海:我应该何时使用IO,何时使用NIO呢?在本文中,我会尽量清晰地解析Java NIO和IO的差异、它们的使用场景,以及它们如何影响您的代码设计。Java NIO和IO的主要区别下表总结了Java NIO和IO之间的主要差别,我会更详细地描述表中每部分的差异。IO NIO面向流转载 2016-03-23 03:00:59 · 448 阅读 · 0 评论 -
java synchronized关键字的用法以及锁的等级:方法锁、对象锁、类锁
作者用通俗易懂的语言将复杂的技术讲解的如此透彻,学习,传播!原文地址:http://zhh9106.iteye.com/blog/2151791在java编程中,经常需要用到同步,而用得最多的也许是synchronized关键字了,下面看看这个关键字的用法。因为synchronized关键字涉及到锁的概念,所以先来了解一些相关的锁知识。 java的内置锁:每转载 2016-03-22 11:15:54 · 5788 阅读 · 0 评论 -
Java泄露及造成内存泄露的原因
一、Java内存回收机制 不论哪种语言的内存分配方式,都需要返回所分配内存的真实地址,也就是返回一个指针到内存块的首地址。Java中对象是采用new或者反射的方法创建的,这些对象的创建都是在堆(Heap)中分配的,所有对象的回收都是由Java虚拟机通过垃圾回收机制完成的。GC为了能够正确释放对象,会监控每个对象的运行状况,对他们的申请、引用、被引用、赋值等状况进行监控,Java会使用有向图的方转载 2016-03-30 18:55:33 · 771 阅读 · 0 评论 -
Callable与Runnable区别
原文地址Callable与 Future 两功能是Java在后续版本中为了适应多并法才加入的,Callable是类似于Runnable的接口,实现Callable接口的类和实现Runnable的类都是可被其他线程执行的任务。Callable的接口定义如下;public interface Callable { V call() throws Ex转载 2016-03-31 01:16:07 · 1327 阅读 · 0 评论 -
TreeMap、HashMap、LindedHashMap的区别。
java为数据结构中的映射定义了一个接口java.util.Map;它有四个实现类,分别是HashMap Hashtable LinkedHashMap 和TreeMapMap主要用于存储健值对,根据键得到值,因此不允许键重复(重复了覆盖了),但允许值重复。Hashmap 是一个最常用的Map,它根据键的HashCode 值存储数据,根据键可以直接获取它的值,具有很快的访问速度,遍历时,取转载 2016-03-21 23:57:13 · 1434 阅读 · 0 评论 -
Collection Map Collections 区别于联系
学习学习!原文地址:http://blog.sina.com.cn/s/blog_105817120102vzh6.htmlCollection:List列表,Set集Map:Hashtable,HashMap,TreeMap Collection 是单列集合List 元素是有序的、可重复有序的 collection,可以对列表中每个元素的转载 2016-03-22 00:19:13 · 455 阅读 · 0 评论 -
Excption与Error包结构。OOM你遇到过哪些情况,SOF你遇到过哪些情况
一道很经典的Java开发面试题,答案写的很全面,大部分内容都来自《深入理解Java虚拟机--JVM高级特性与最佳实践》,很推荐大家看这本书,在看这本书的时候,赞叹作者的写作功底,深入浅出!但是很多一开始看这本书的人感觉并不知道在讲什么,很推荐大家在看书的同时,多多上网查资料,看看网友们的总结,多多实践!会帮助你理解JVM.原文地址:http://www.mamicode.com/info-转载 2016-03-22 00:42:11 · 3698 阅读 · 0 评论 -
Java面向对象的三个特征与含义(封装 继承 多态)
三大特征是:封装、继承和多态。封装是指将某事物的属性和行为包装到对象中,这个对象只对外公布需要公开的属性和行为,而这个公布也是可以有选择性的公布给其它对象。在java中能使用private、protected、public三种修饰符或不用(即默认defalut)对外部对象访问该对象的属性和行为进行限制。继承是子对象可以继承父对象的属性和行为,亦即父对象拥有的属性和行为,其子对象也就拥有了这原创 2016-03-22 01:15:20 · 4105 阅读 · 3 评论 -
java面向对象浅析--抽象类、接口与多继承
高分好文!原文地址:http://blog.csdn.net/hwalan/article/details/1341065有时候,我们可能想要构造一个很抽象的父类对象,它可能仅仅代表一个分类或抽象概念,它的实例没有任何意义,因此不希望它能被实例化。例如:有一个父类“水果(Fruit)”,它有几个子类“苹果(Apple)”、“橘子(Orange)”、“香蕉(Banana)”等。水果在这里仅仅转载 2016-03-22 01:41:39 · 566 阅读 · 0 评论 -
对Java多态性的理解
总结的不错,学习学习!原文地址:http://www.cnblogs.com/jack204/archive/2012/10/29/2745150.htmlJava中多态性的实现什么是多态1. 面向对象的三大特性:封装、继承、多态。从一定角度来看,封装和继承几乎都是为多态而准备的。这是我们最后一个概念,也是最重要的知识点。2. 多态的定义:指允许不同类的对象对同一消转载 2016-03-22 10:46:28 · 436 阅读 · 0 评论 -
线程同步的方法:sychronized、lock、reentrantLock等总结分析
同步格言:如果你向一个变量写值,而这个变量接下来可能会被另一个线程所读取,或者你从一个变量读值,而它的值可能是前面由另一个线程写入的,此时你就必须使用同步一.什么是sychronizedsychronized是java中最基本同步互斥的手段,可以修饰代码块,方法,类.在修饰代码块的时候需要一个reference对象作为锁的对象.在修饰方法的时候默认是当前对象原创 2016-03-22 11:00:19 · 4427 阅读 · 1 评论 -
《JAVA并发编程实践》学习笔记(第十.十一章)
第10章 避免活跃度危险10.1 死锁 当一个线程永远占有一个锁,而其他线程尝试去获得这个锁,那么它们将永远被阻塞。 与其他并发危险相同,死锁很少被立即发现。一个类如果有发生死锁的潜在可能并不意味着死锁每次都发生,它只发生在改发生的时候。当死锁出现的时候,往往是最不幸的时候——在高负载之下。10.1.1 锁顺序死锁 如果所有线程一通用的固定秩原创 2016-04-09 13:21:08 · 466 阅读 · 0 评论