
Java基础
文章平均质量分 90
这个专栏主要写一些Java的知识,例如介绍java API的实现、Java内存模型等等
最美的词
竹杖芒鞋轻胜马,谁怕?一蓑烟雨任平生
展开
-
关于“==”和“equals()”
问题引入请看下面的代码清单1 public void test1(){ String a = "a" + "b" + 1; String b = "ab1"; System.out.println(a == b); }上述这段代码来源自谢宇编著的书籍《Java特种兵》上册。代码清单1中的输出是true这是个考察Java基本功的问题,类似的问原创 2015-04-14 17:04:46 · 1095 阅读 · 0 评论 -
Maven初探
本文描述了如何使用maven构建一个简单的Hello World项目1.编写POM Maven项目的核心是pom.xml(Project Object Model),pom定义了项目的基本信息,用于描述项目如何构建,声明项目依赖等等。先为Hello World项目编写一个简单的pom.xml。 首先创建一个hello-world的文件夹,在该目录下新建一个名为p原创 2015-02-05 17:19:01 · 1318 阅读 · 0 评论 -
面试中的单例模式
最近的两次面试中,都被要求在纸上写代码实现单例(Singleton)模式。下文展示了三种不同的Singleton实现方式:1.不好的解法一:只适用于单线程环境public class Singleton1 { private static Singleton1 instance = null; private Singleton1() { } public stat原创 2014-08-17 12:11:11 · 1980 阅读 · 0 评论 -
Java反射举例
本文参考:http://www.cnblogs.com/yydcdut/p/3845430.html1.Java反射的基本介绍Java的反射非常强大,传递class, 可以动态的生成该类、取得这个类的所有信息,包括里面的属性、方法以及构造函数等,甚至可以取得其父类或父接口里面的内容。Java 反射机制主要提供了以下功能:在运行时判断任意一个对象所属的类;在运行时构造任意一个原创 2014-08-12 00:02:10 · 1576 阅读 · 3 评论 -
Java死锁举例
死锁: 在多线程竞争使用共享资源的情况下,就有可能出现死锁的情况。比如,当一个线程等待另一个线程所持有的锁时,那个线程又可能在等待第一个线程所持有的锁。此时,这两个线程会陷入无休止的相互等待状态,这种情况就称为死锁。产生死锁的四个必要条件:1、互斥条件。进程对所分配的资源进行排它性控制,即在一段时间内某资源仅为一进程所占有。2、请求和保持条件。当进程因请求资源而阻原创 2014-08-13 00:58:46 · 2640 阅读 · 1 评论 -
Java多线程--生产者与消费者问题
说明Java中,线程之间的通信主要是由java.lang.Object类提供的wait、notify和notifyAll这3个方法来完成:①对象的wait方法被调用后,线程进入对象的等待队列中,并释放对象锁,其它线程可以竞争使用此对象锁;sleep方法使得一个线程进入睡眠状态,但是线程所占有的资源并没有释放。②当对象的notify方法被调用,该方法会从对象的等待队列中随机取出一个线原创 2014-08-13 11:45:18 · 1255 阅读 · 0 评论 -
Java线程池
本文大部分内容转自http://www.cnblogs.com/yydcdut/p/3890893.html1.Java线程池基本原理线程池基本原理是:系统先启动若干数量的线程,并让这些线程处于睡眠状态,当有新任务时,就会唤醒线程池中的某一个睡眠线程,让它来处理这个任务。当处理完这个任务后,线程又处于睡眠状态。Java 中,线程池的主要组成部分是工作者线程,这种类型的线程独立于它执行的原创 2014-08-13 17:50:08 · 1686 阅读 · 1 评论 -
几个集合类的比较
1.Hashtable和HashMap不同点总结如下① Hashtable是Dictionary的子类,实现了Map接口;HashMap是AbstractMap的子类,是Map接口的一个实现类;② Hashtable中的方法是同步的,大多数方法如put, get都用用synchronized关键字修饰。而HashMap是线程不安全的。在多线程程序中,可以不添加额外操作就可以安全原创 2014-08-23 21:14:42 · 1190 阅读 · 0 评论 -
Java内存模型
1.Java的内存泄漏在Java中,内存泄漏指的是存在具备下面两个特点的对象:①这些对象是可达的,即在有向图中,存在通路可以与其相连;②这些对象是无用的,即程序以后不会再使用这些对象。如果对象满足这两个条件,就可以判定为Java中的内存泄漏,这些对象不会被GC所回收,却占用着内存。对于那些不可达的对象,GC会负责回收。我们可以通过调用System.gc()去访问GC,但是JVM原创 2014-08-24 14:50:26 · 1423 阅读 · 1 评论 -
Java运行时异常和非运行时异常
1.Java异常机制Java把异常当做对象来处理,并定义一个基类java.lang.Throwable作为所有异常的超类。Java中的异常分为两大类:错误Error和异常Exception,Java异常体系结构如下图所示:图片来源:http://blog.youkuaiyun.com/wuwenxiang91322/article/details/103463372.Throwab原创 2014-08-25 11:19:07 · 64541 阅读 · 3 评论 -
Java中的String
参考资料:http://www.cnblogs.com/chenssy/p/3695271.htmlhttp://blog.youkuaiyun.com/yyaf2013/article/details/12168491首先先来看看下面这段代码的输出结果:public void strTest() { String a = "huhui"; String b = "huhui";原创 2014-08-25 17:23:23 · 1188 阅读 · 0 评论 -
Java中的volatile关键字
本文内容节选自:Java开发编程:volatile关键字解析原创 2014-08-27 20:25:27 · 1125 阅读 · 0 评论 -
Java并发编程:Lock
本文转自:http://www.cnblogs.com/dolphin0520/p/3923167.html Java中可以使用synchronized关键字来实现线程之间对共享变量的同步访问。从Java 1.5以后,在java.util.concurrent.locks包下提供了另外一种方式来实现同步访问——Lock。一、synchronized的缺陷 如果一个代码块被s原创 2014-08-28 16:14:58 · 1238 阅读 · 0 评论