Java基础
Mr-Obama
You will always be able to make more money But you cannot make more time
展开
-
代码详解の多线程下的代码死锁
一、main函数 package com.sdmjhca.springBootDemo.deadlock; import java.util.concurrent.Executor; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; /** * @author JHMI原创 2017-08-20 20:36:46 · 412 阅读 · 0 评论 -
Java序列化的几种特殊情景
package com.sdmjhca.springBootDemo.serializable; import java.io.*; /** * @author JHMI on 2017/8/29. jdk1.8 * 情景1:静态变量序列化 * static 修饰的变量是类的变量 * 序列化保存的是对象的状态,所以序列化不会保存静态变量 * * 情景2:transient关键字的作原创 2017-08-29 16:44:13 · 489 阅读 · 0 评论 -
Java Object wait notify 机制实现两个线程交替打印问题
线程1负责打印a,b,c,d 线程2负责打印1,2,3,4 要求控制台中输出的内容为 a1b2c3d4 package com.sdmjhca.springBootDemo.countdownlatch; /** * @author JHMI on 2017/8/28. */ public class TestMain { static final Object obje原创 2017-08-28 16:54:03 · 11632 阅读 · 0 评论 -
Java动态代理机制
原文链接https://www.ibm.com/developerworks/cn/java/j-lo-proxy1/index.html转载 2017-08-15 17:13:44 · 225 阅读 · 0 评论 -
Java动态代理和CGLIB代理
Java动态代理 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 /** * HelloWorld.java */public interface HelloWorld { public int say(String words)转载 2017-08-15 16:33:42 · 227 阅读 · 0 评论 -
Arraylist与LinkedList的区别
ArrayList 底层是个默认大小为10的数组,所以当size需求大于10时,初始化size的时候大一点。当ArrayList的写满之后,ArrayList会生成一个更大的数组,大小变为原来的1.5倍。然后将原来数组的数据拷贝过去,因此会占用一定的时间和内存。 12345678910111213 public void ensureCapacity(int va转载 2017-08-15 16:32:46 · 234 阅读 · 0 评论 -
代码详解のTreeMap实现原理
TreeMap的数据结构是红黑树,建议在分析源码前对红黑树有一定了解; 关于树型结构可以参考:http://www.cnblogs.com/xrq730/p/5187032.html原创 2017-08-22 16:57:54 · 352 阅读 · 0 评论 -
理解String 及 String.intern() 在实际中的应用
原文链接 http://www.cnblogs.com/Qian123/p/5707154.html转载 2017-08-15 16:14:52 · 409 阅读 · 0 评论 -
代码详解のLinkedList原码分析和ArrayList比较
package com.sdmjhca.springBootDemo.collections; import java.util.LinkedList; /** * @author JHMI on 2017/8/22.jdk1,8 * 通过跟踪分析源码不难发现LinkedList的存储结构是双向链表 * 存储的内容为 previous(前一个单元的地址) item(当前元素的内容) ne原创 2017-08-22 11:18:11 · 262 阅读 · 0 评论 -
代码详解のArrayList
package com.sdmjhca.springBootDemo.collections; import java.util.ArrayList; import java.util.Arrays; /** * @author JHMI on 2017/8/21. JDK1.8 * 参考文章:http://www.cnblogs.com/xrq730/p/4989451.html *原创 2017-08-21 17:36:56 · 257 阅读 · 0 评论 -
代码详解の使用CountDownLatch解决面试问题:T1和T2线程执行计算,T3线程计算结果的统计
package com.sdmjhca.springBootDemo.synchronizedtest; import java.util.concurrent.CountDownLatch; /** * 例子:T1和T2线程执行计算,T3线程进行T1和T2结果的统计 * 思路定义一个“锁计数器”为2的线程并发类,T3通过await方法进行锁等待,T1执行完成后计数器-1,T2完成后计数器原创 2017-08-18 18:52:33 · 690 阅读 · 2 评论 -
代码详解のJava面向对象特性之多态
一、main函数 package com.sdmjhca.springBootDemo.duotai; /** * @author JHMI on 2017/8/20 0020. * java面向对象的特性之“多态” * 特性1、继承 * 2、子类重写父类方法 * 3、父类的引用指向子类实例 * 4、father对象只能访问父类中声明方法,不能调用子类中新增的方法、以及定义为私原创 2017-08-20 22:17:35 · 304 阅读 · 0 评论 -
代码详解のThread.join()实现多个线程顺序执行
多线程开发中经常遇到线程间的依赖问题,比如: 线程T2的运行依赖线程T1的执行结果,线程T3的运行依赖线程T2和线程T4的执行结果,此时 T2和T4是可以并行计算的。 遇到这种问题我们就可以使用Thread.join()方法实现,首先开下join()方法的源码: /** * Waits at most {@code millis} milliseconds for thi原创 2017-09-25 15:37:51 · 752 阅读 · 0 评论