- 博客(25)
- 收藏
- 关注
原创 线程通信
例子:两个线程交替输出数字class Number implements Runnable { private int number = 1; @Override public void run() { while (true) { synchronized (this) { notify(); if (number <= 100) {
2021-03-14 22:04:38
101
原创 Java基础 - final关键字
1、final 可以用来修饰类、方法、变量2、修饰类的时候,这个类不能被继承3、修饰方法的时候,这个方法不能被重写4、修饰变量,此时这个 "变量" 就被称为是一个常量 4.1、修饰属性:可以赋值的位置有:显示初始化、代码块中初始化、构造方法中初始化class A { /**显示初始化*/ final int A = 0; final int B; final int C; /**代码块中初始化*/ { B = 1...
2021-03-14 22:04:04
122
原创 java基础 - 代码块
1、代码块的作用:用来初始化类、对象2、要是使用修饰符的话,只能用static3、分类:静态代码块、非静态代码块4、静态代码块内部可以有输出语句 随着类的加载而执行,而且只执行一次 作用:初始化类的信息 如果一个类中定义了多个静态代码块,则按照声明的先后顺序执行 静态代码块的执行要优于非静态代码块的执行 静态代码块内只能调用静态的属性、方法,不能调用非静态的结构5、非静态代码块内部可以有输出语句 随着对象的创建而执行 没创建一个对象,就执行一次非静态代码块 作用:可以在
2021-03-14 20:31:07
108
原创 线程安全
方式一、同步代码块public class Windows01 implements Runnable{ private int ticket = 100; Object object = new Object(); @Override public void run() { while (true) { synchronized (object){ if (ticket > 0) {
2021-03-13 10:39:18
129
原创 线程基础
一、创建1、新建一个类继承Thread类,重写run()方法,创建该类的对象,通过此对象调用start()方法public class Demo01 { public static void main(String[] args) { ThreadDemo t = new ThreadDemo(); t.start(); }}class ThreadDemo extends Thread{ @Override public vo
2021-03-11 16:02:00
221
1
原创 JVM学习-方法区
一、概述各个线程共享 JVM启动时创建,关闭时销毁。物理空间可以不连续 jdk7之前叫永久代,jdk8之后叫元空间。区别在于元空间不在虚拟机设置的内存中,而是使用的本地内存
2020-07-18 15:55:32
135
原创 JVM学习-对象的实例化、内存布局与访问定位
一、对象的实例化1、创建对象的方法new -- 最常用的方法 Class的newinstance() -- 反射的方式,只能调用空参的构造器,权限必须是public。jdk1.8之前有效 Constructor的newInstance() -- 反射的方法,可以调用空参、带参的构造器,权限没有要求。jdk1.8之后有效 使用clone() -- 当前类实现Cloneable接口 使用反序列化 第三方库Objenesis2、对象创建的步骤1、判断对象对应的类是否加载、链接、...
2020-06-30 23:20:02
223
原创 JVM学习-堆
一、概述一个JVM实例只存在一个堆空间,它也是 Java 内存管理的核心区域 堆在启动时被创建,大小也被确定了 所有线程共享堆空间数据。但是在堆空间上为每个线程划分了各自对应的私有的缓冲区(Thread Local Allocation Buffer,TLAB)...
2020-06-26 16:05:42
142
原创 JVM学习-虚拟机栈
一、概述1、概念Java虚拟机栈(Java Virtual Machine Stack),早期也叫Java栈。每个线程创建的时候都会创建一个虚拟机栈,其内部保存一个个的栈帧(Stack Frame),对应着一次次的Java方法调用。它是线程私有的。2、生命周期生命周期和线程的一致。随着线程的创建而创建,销毁而销毁。3、作用主管Java程序的运行。它保存方法的局部变量(8种基本数据类型、对象的引用地址)、部分结果,并参与方法的调用和返回。4、栈和堆的区别栈是运行时的单位,堆是存
2020-06-21 00:15:58
555
原创 java数据结构学习--队列(数组实现)
使用Java实现队列(数组)1、首先定义这个队列的数据结构class Queue { // 队列的容量 private int size; // 头指针 指向队列的第一个元素,初始值为 0 private int front; // 尾指针 指向队列的最后一个元素的后一个位置,初始值为 0 private int rear; //...
2019-07-13 23:34:39
280
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人