摘要: 创建线程有四种方式: 1.继承Thread类 public class MyThread00 extends Thread { public void run() { for (int i = 0; i < 5; i++) { System.out.println(Thread.currentThr 阅读全文
posted @ 2019-12-04 21:18 TP000 阅读(2032) 评论(0) 推荐(0) 编辑
摘要: 1 阅读全文
posted @ 2019-12-04 20:33 TP000 阅读(66) 评论(0) 推荐(0) 编辑
摘要: Spring 框架 Spring 框架是一个分层架构,由 7 个定义良好的模块组成。Spring 模块构建在核心容器之上,核心容器定义了创建、配置和管理 bean 的方式,如图 1 所示。 核心容器(spring core):提供spring框架的基本功能。核心容器的主要组件是beanfactory 阅读全文
posted @ 2017-03-27 11:15 TP000 阅读(136) 评论(0) 推荐(0) 编辑
摘要: 对象的内存分配,往大的方向上讲,就是在堆上分配,少数情况下也可能会直接分配在老年代中,分配的规则并不是百分之百固定的,其细节决定于当前使用的是哪种垃圾收集器组合,当然还有虚拟机中与内存相关的参数。垃圾收集器组合一般就是Serial+Serial Old和Parallel+Serial Old,前者是 阅读全文
posted @ 2017-03-22 14:10 TP000 阅读(432) 评论(0) 推荐(0) 编辑
摘要: 哪些内存需要回收? 哪些内存需要回收是垃圾回收机制第一个要考虑的问题,所谓“要回收的垃圾”无非就是那些不可能再被任何途径使用的对象。那么如何找到这些对象? 1、引用计数法 这个算法的实现是,给对象中添加一个引用计数器,每当一个地方引用这个对象时,计数器值+1;当引用失效时,计数器值-1。任何时刻计数 阅读全文
posted @ 2017-03-22 10:23 TP000 阅读(340) 评论(0) 推荐(0) 编辑
摘要: java内存模型 Java虚拟机规范中试图定义一种Java内存模型(Java Memory Model,JMM)来屏蔽掉各种硬件和操作系统的访问差异,以实现让Java程序在各种平台下都能达到一致的内存访问效果。在此之前,主流程序语言(如C/C++等)直接使用物理硬件和操作系统的内存模型,因此,会由于 阅读全文
posted @ 2017-03-16 21:05 TP000 阅读(176) 评论(0) 推荐(0) 编辑
摘要: 对象内存布局 在Hotspot虚拟机中,对象在内存中存储的布局可以分为三块区域:对象头,实例数据,对齐填充。 1.对象头 1.1 存储对象自身的运行时数据(mark word):哈希码,gc分代年龄。 1.2 Class指针:通过该指针确定该对象是哪个类的实例。 在64位系统中,class指针占4B 阅读全文
posted @ 2017-03-16 19:22 TP000 阅读(359) 评论(0) 推荐(0) 编辑
摘要: volatile关键字 作用是使变量在多个线程间可见。 关键字volatile可以说是Java虚拟机提供的最轻量级的同步机制。 一个变量被定义为volatile后,它将具备两种特性: 1、保证此变量对所有线程的"可见性",所谓"可见性"是指当一条线程修改了这个变量的值,新值对于其它线程来说都是可以立 阅读全文
posted @ 2017-03-16 18:38 TP000 阅读(958) 评论(0) 推荐(0) 编辑
摘要: 对LinkedList使用普通的for循环,这是一种非常糟糕的做法。这是数据结构的问题。 ArrayList和LinkedList使用普通for循环速度的测试: 不断增大LIST_SIZE,我用表格表示一下运行结果: 从运行结果我们看到,按倍数增大List容量,ArrayList的遍历显得比较稳定, 阅读全文
posted @ 2017-03-16 12:42 TP000 阅读(370) 评论(0) 推荐(0) 编辑
摘要: 死锁 当一个线程永远的持有一个锁,并且其他线程都尝试去获得这个锁,那么它们将永远被阻塞。如果线程A持有L锁想获取M锁,线程B持有M锁想获取L锁,那么两个线程会永远等待。 数据库系统的设计中考虑了监测死锁以及从死锁中恢复,数据库如果监测到一组事务发生了死锁时,将选择一个牺牲者并放弃这个事务。java虚 阅读全文
posted @ 2017-03-10 18:14 TP000 阅读(267) 评论(0) 推荐(0) 编辑