摘要: 静态变量和静态方法 static关键字最基本的用法是: 1、被static修饰的变量属于类变量,可以通过类名.变量名直接引用,而不需要new出一个类来 2、被static修饰的方法属于类方法,可以通过类名.方法名直接引用,而不需要new出一个类来 被static修饰的变量、被static修饰的方法统 阅读全文
posted @ 2020-05-10 09:50 久别重逢 阅读(124) 评论(0) 推荐(0) 编辑
摘要: 一、基本用法 修饰类 表示这个类不能被继承,并且final类的所以成员方法都可以都会被隐式制定为final方法。因为final修饰类以后,导致类不能再被继承,出于安全考虑,尽量不要将类设计为final类。 修饰方法 锁定方法,防止任何继承类修改它的含义 效率。早期java版本,final方法转为内嵌 阅读全文
posted @ 2020-05-10 09:48 久别重逢 阅读(75) 评论(0) 推荐(0) 编辑
摘要: 概述 垃圾收集 Garbage Collection 通常被称为“GC”,它诞生于1960年 MIT 的 Lisp 语言,经过半个多世纪,目前已经十分成熟了。 jvm 中,程序计数器、虚拟机栈、本地方法栈都是随线程而生随线程而灭,栈帧随着方法的进入和退出做入栈和出栈操作,实现了自动的内存清理,因此, 阅读全文
posted @ 2020-05-10 09:46 久别重逢 阅读(97) 评论(0) 推荐(0) 编辑
摘要: JVM内存结构主要有三大块:堆内存、方法区和栈。堆内存是JVM中最大的一块由年轻代和老年代组成,而年轻代内存又被分成三部分,Eden空间、From Survivor空间、To Survivor空间,默认情况下年轻代按照8:1:1的比例来分配; 方法区存储类信息、常量、静态变量等数据,是线程共享的区域 阅读全文
posted @ 2020-05-10 09:44 久别重逢 阅读(127) 评论(0) 推荐(0) 编辑
摘要: 1、什么是类的加载 类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个 java.lang.Class对象,用来封装类在方法区内的数据结构。类的加载的最终产品是位于堆区中的 Class对象, Class对象封装了类在方法区内的数据结构, 阅读全文
posted @ 2020-05-10 09:42 久别重逢 阅读(95) 评论(0) 推荐(0) 编辑
摘要: 1、线程安全:多线程单线程程序运行结果一致 线程不安全:多线程单线程程序运行结果不一致 2、导致线程安全问题原因 全局变量或者静态变量引起; 一般情况下,多个线程只读数据,不写数据,则线程是安全的; 若多个线程同时执行写操作,则容易导致线程不安全问题发生。 根本原因: 多个线程操作共享的数据 操作共 阅读全文
posted @ 2020-05-10 09:36 久别重逢 阅读(103) 评论(0) 推荐(0) 编辑
摘要: 一、继承Thread类,重写run方法,实现创建一个线程 package com.wuhao.thread; import java.util.Date; /** * 自定义线程 */ public class MyThread extends Thread{ public void run() { 阅读全文
posted @ 2020-05-10 09:35 久别重逢 阅读(151) 评论(0) 推荐(0) 编辑
摘要: 1、新建 new 关键字创建线程之后,该线程处于新建状态 JVM为线程分配内存,初始化成员变量值 2、就绪 线程调用start()方法,线程处于就绪状态 JVM为线程创建方法栈和程序计数器,等待线程调度器调度 3、运行 就绪态的线程获得CPU资源,开始执行run()方法,线程处于运行状态 4、阻塞 阅读全文
posted @ 2020-05-10 09:32 久别重逢 阅读(130) 评论(0) 推荐(0) 编辑