自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(14)
  • 收藏
  • 关注

原创 Java并发之volatile

volatile 与 并发三特性 volatile 保证可见性 volatile修饰共享变量,一旦一个线程对该共享变量作出修改,当修改写回主内存时,会使得其他访问该共享变量的线程中的值失效,从内存中重新提取最新修改后的值。 public class DemoVisibility { // 1、创建一个共享变量 private static volatile boolean flag = true; private static Object obj = new Object();

2020-08-18 21:09:43 132

原创 Java并发之synchronized

并发编程的三个问题 可见性 可见性 是指一个线程对共享变量进行修改,其他线程立即得到修改后的最新值。 可见性演示:     1、创建一个共享变量     2、创建一条线程不断读取共享变量     3、创建另一条线程修改共享变量 public class DemoVisibility { // 1、创建一个共享变量 private static boolean flag = true; public static void main(String[] args) throws I

2020-08-18 16:42:28 164

原创 Java基础之反射

反射     反射是由 Class 对象开始的,从 Class 对象中,我们可以获得:     1、有关该类的全部成员的完成列表;     2、该类的所有类型(它实现的接口和扩展的类);     3、有关该类自身的信息,如:应用的修饰符、所在的包。 反射通过字节码文件找到其类中的方法和属性等 反射机制     Java反射机制是在运行状态中 1、对于任意一个类,都能够知道这个类的所有属性和方法; 2、对于任意一个对象,都能够调用它的任意一个属性和方法;     这种动态获取的信息以及动态调用对象的方

2020-08-17 16:30:06 109

原创 Java并发之线程状态

线程状态 新建状态(NEW)     使用 new 操作符创建一个线程,并且尚未调用 start() 方法,此时线程处在新建状态。 Thread t = new DemoThread(); System.out.println(t.getState()); // output: NEW 可运行状态/就绪状态(RUNNABLE)     一个新创建的线程并不自动开始运行,要执行线程,必须调用线程的 start() 方法。当线程对象调用 start() 方法即启动了线程,start() 方法创建线程运

2020-08-04 18:25:34 122

原创 Java并发之多线程的实现方式

多线程的四种实现方式 继承 Thread 类实现多线程 创建一个类,并继承 Thread 类 重写 Thread 类中的 run() 方法(业务代码) 实例化创建好的线程类 调用实例化对象的 start() 方法启动线程 public class ThreadDemo { public static void main(String[] args){ // 3、实例化创建好的线程类 Thread t = new DemoThread(); // 4

2020-08-01 17:30:10 209

原创 Java并发之进程与线程的区别

进程与线程 何为进程     进程是程序的一次执行过程,是系统进行资源分配的基本单位,实现了操作系统的并发。系统运行一个程序即是一个进程从创建,运行到消亡的过程。 何为线程     线程是一个比进程更小的执行单位,是CPU调度和分派的基本单位,一个进程在其执行的过程中可以产生多个线程,实现的是进程内部的并发。 进程与线程的区别 进程 线程 系统进行资源分配的最小单位 程序执行的最小单位 实现的是操作系统的并发 实现的是进程内部的并发 进程有自己独立的地址空间 线程共享数据 创建、

2020-08-01 17:27:01 92

原创 Java基础之String、StringBuilder 和 StringBuffer 的区别

String、StringBuilder 和 StringBuffer 的区别 String 与 (StringBuilder 和 StringBuffer) 的区别 String StringBuilder 与 StringBuffer 字符串数组用final修饰,不可变 字符串数组未用final修饰,可变     String字符串数组用final修饰,导致每次对String对象的修改操作都会生成新的String对象,不仅效率低下,而且浪费大量优先的内存空间。 S...

2020-07-31 16:04:57 94

原创 Java基础之StringBuilder 与 StringBuffer

StringBuilder 与 StringBuffer 类的定义 public final class StringBuilder extends AbstractStringBuilder implements java.io.Serializable, CharSequence public final class StringBuffer extends AbstractStringBuilder implements java.io.Serializab

2020-07-31 15:42:55 92

原创 JVM之运行时数据区

JVM 运行时数据区     Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。这些区域有各自的用途,以及创建和销毁的时间,有的区域随着虚拟机进程的启动而一直存在,有些区域则是依赖用户线程的启动和结束而建立和销毁。 程序计数器 线程私有,生命周期与线程相同 可以看作是当前线程所执行的字节码的行号指示器     程序计数器(Program Counter Register)是一块较小的内存空间,它可以看作是当前线程所执行的字节码的行号指示器。在Java虚拟机的概念

2020-07-30 12:53:03 127

原创 Java基础之String

String 1.8 类的定义 public final class String implements java.io.Serializable, Comparable<String>, CharSequence String类使用final关键字修饰,限制了该类无法被继承,里面的方法也无法被重写。这是String对象不可变的第一点。 类的成员变量 /** The value is used for character storage. */ private f...

2020-07-28 23:41:48 112

原创 Java基础之面向对象编程--多态

多态 1、方法的多态性     * 重载     * 重写 2、对象的多态性:父子实例之间的转换处理     * 对象向上转型:父类 父类实例 = 子类实例;     * 对象向下转型:子类 子类实例 = (子类)父类实例; //目的:使用子类特有的功能 多态的实现方式 基于继承的实现 基于接口的实现 实现多态的必要条件 继承 重写 向上转型 ...

2020-07-28 16:19:26 50

原创 Java基础之Object类

Object: 所有类的超类     在Java中每个类都是由Object扩展而来,如果没有明确指出超类,Object就被认为是这个类的超类。 equals() hashCode() toString() equals()方法 Object类中equals()方法源码 public boolean equals(Object obj) { return (this == obj); }     Object类中equals()方法仅判断两个对象是否具有相同的引...

2020-07-28 15:40:36 135

原创 Java基础之面向对象编程--继承

继承 即 在已有结构的基础上进行功能的扩充     假如你在一个公司工作,公司中经理和普通员工的待遇有些差异,但他们之间也存在很多共同的地方。例如,他们都领取薪水。而经理在完成了预期的业绩之后还能额外得到奖金。     这种情形 就需要用到继承。为经理新建一个类,以便增加一些新的功能,同时可以重用普通员工类中已经编写好的部分。 继承的目的 代码重用,子类重用父类代码 功能扩充,子类扩充父类功能 具体实例 使用extends关键字实现继承     extends表明正在构造一个新类派生...

2020-07-28 12:39:05 123

原创 Java基础之面向对象编程--封装

封装 即 属性私有化 实现步骤 将类中的变量修饰符设为private 创建getter()/setter()方法,提供公共对外访问接口 在getter()/setter()方法中加入属性控制语句 案列 public class Person { // step 1: 属性私有化 private String name; private int age; // step 2: 提供公共对外访问接口 public String getName() ...

2020-07-27 16:36:22 60

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除