Java内存模型

Java内存结构线程共享方法区:也称非堆区,存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据。堆:Java 虚拟机所管理的内存中最大的一块,几乎所有的对象实例都在这里分配内存。堆是垃圾回收器主要管理的区域。Java 堆中还可以细分为:新生代、老年代和永久代(在 Java8 中,永久代已经被移除,被一个称为“元空间”(Metaspace)的区域所取代。元空间的本质和永久...

继续阅读 »

Java多线程总结

什么是线程线程是程序的执行单元,它包含在进程之中。什么是进程进程是线程的集合,一个线程内至少包含一个进程。创建线程1. 继承 Thread 类public class MyThread extends Thread { public void run() { // 线程代码块 } public static void main(String[] a...

继续阅读 »

Java线程的状态

新建(New)实例化了一个线程对象,但还没有调用 start() 方法。就绪(Ready)调用了 start() 方法,但 CPU 还未执行此线程。运行中(Running)线程获取了 CPU 的使用权,正在执行此线程。限期等待(Timed Waiting)线程不会被分配到 CPU 的执行时间,在指定的时间后,线程会自动被唤醒。如 Thread.sleep() 方法。无限期等待(Waiting...

继续阅读 »

Java浅克隆与深克隆

浅克隆浅克隆只复制当前对象的所有基本数据类型,以及相应的引用变量,但没有复制引用变量指向的实际对象,也就是只复制了引用变量的内存地址。重写Object的clone方法,然后实现Cloneable接口。被克隆的类必须实现Cloneable接口,否则如果我们将在对象上调用clone()时,JVM将抛出CloneNotSupportedException。Main.javapublic class...

继续阅读 »

Java中静态方法能否被重写

在Java中,子类可继承父类中的方法,而不需要重新编写相同的方法。但有时子类并不想原封不动地继承父类的方法,而是想作一定的修改,这就需要采用方法的重写(Override)。方法重写又称方法覆盖。public class Test { public static void main(String[] args) { /** * 结论: *...

继续阅读 »