![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java
是晓Xiao哦
这个作者很懒,什么都没留下…
展开
-
死锁举例以及检测死锁
什么是死锁两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象。举一个死锁的例子线程A持有对象a的锁,线程B持有对象b的锁, 然后这两个线程都在等待对方法释放其对象的锁。public class DieLock { public static void main(String[] args) { final Object a = new Object(); final Object b = new Object(); Thread threadA原创 2020-11-11 21:15:21 · 526 阅读 · 0 评论 -
线程池
目录为什么要使用线程池如何创建线程池核心参数线程池的处理流程和原理常用的阻塞队列1、 ArrayBlockingQueue2、LinkedBlockingQueue3、PriorityBlockingQueue4、SynchronousQueue5、DelayedQueue饱和策略线程池的种类FixedThreadPoolCachedThreadPoolSingleThreadExecutorScheduledThreadPool为什么要使用线程池控制并发的数量,并发数量过多,可能会导致资源消耗过多原创 2020-10-12 14:56:44 · 113 阅读 · 0 评论 -
Java程序初始化的顺序
执行顺序父类静态变量 ,父类静态代码块,子类静态变量,子类静态代码块,父类非静态变量,父类非静态代码块,父类构造函数,子类非静态变量,子类非静态代码块, 子类构造函数原因在java语言中,当实例化对象时,对象所在类的所有成员变量首先要进行初始化,只有当所有类成员完成初始化,才会调用对象所在类的构造函数创建对象。在《深入理解java虚拟机》中提到,在初始化阶段,虚拟机规范严格规定了有且只有5种情况必须立即对类进行“初始化”,其中提到,(1)遇到getstatic,putstatic,invokest原创 2020-09-23 16:33:13 · 95 阅读 · 0 评论 -
反射机制
1、反射是什么在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性,这种动态获取的信息以及动态调用对象的方法的功能称为JAVA语言的反射机制2、获得一个类的类对象的方式(1)类名.class(2)对象.getClass()(3)Class.forName(包名.类名)//第一种方式:类名.classClass stuClass1 = Student.class; //第二种方式:对象.getClass()Student s.原创 2020-09-16 21:44:37 · 98 阅读 · 0 评论 -
HashMap keySet()方法
语法:keySet()参数:该方法不带任何参数返回值:该方法返回一个具有哈希映射键的集合import java.util.HashMap;public class Hash_Map_Demo { public static void main(String[] args) { HashMap<Integer, String> map = new HashMap<Integer, String>(); map.put(10, "liu"); map.put(20,原创 2020-09-08 20:34:43 · 731 阅读 · 0 评论 -
HashMap getOrDefault方法
语法getOrDefault(Object key, V defaultValue)用于获取使用指定键映射的值,如果哈希表中没有存在该键,则返回默认值(defaultValue)示例对于键"b"来说,哈希表中已经有键"b",对应的值为200,这时设置默认值int k = map.getOrDefault("b", 500),会返回原来已有的值200import java.util.HashMap;public class GFG { public static void main(Strin原创 2020-09-07 09:50:36 · 642 阅读 · 0 评论 -
一个Java程序从写到执行的过程
java程序从源文件创建到程序运行需要经过两大步骤:1、(编译):源文件被JVM中的java编译器进行编译为.class文件。编译后的字节码文件主要分为两部分:常量池和方法字节码。常量池记录的是代码出现过的常量、类名、成员量以及符号引用(类引用、方法引用、成员变量引用);方法字节码中放的是各个方法的字节码2、(运行)字节码由Java虚拟机运行。Java类运行的过程大概分为两个步骤:(1)类的加载(2)类的执行public class Test { public static void main(St原创 2020-09-01 13:23:11 · 412 阅读 · 0 评论 -
关键字Synchronized
重量级锁,用于实现同步。(同步是指在多个线程并发访问共享数据时,保证共享数据在同一时刻只被一个线程使用)具体使用形式1、同步方法块锁是Synchronized括号里配置的对象,只作用一个对象,如果两个线程调用同一个类不同对象的同步代码块,这两个线程不需要同步。public void func(){ synchronized(this){ // ... }}2、普通同步方法锁是当前实例对象,和同步代码块一样,作用于同一个对象public synchronized void func(原创 2020-08-30 20:59:54 · 106 阅读 · 0 评论 -
Unicode和ASCII码
Java支持Unicode码,Unicode码是由Unicode协会建立的一种编码方案,它支持使用世界各种语言所书写的文本的交换、处理和显示。一开始被设计为16位的字符编码,后面被扩展位1112 064 个字符。一个16位Unicode码占两个字节,用以\u开头的4位十六进制数表示,范围包括’\u0000’ - ‘\uFFFF’。ASCII码是表示所有大小写字母、数字、标点符号和控制字符的8位编码表。...原创 2020-08-30 20:10:11 · 214 阅读 · 0 评论 -
volatile和sychronized关键字
volatile1、修饰成员变量2、保证所有线程对变量访问的可见性(告知程序任何对该变量的访问均需要从共享内存中获取,而对它的改变必须同步刷新回共享内存)sychroinized1、修饰方法或是同步块2、确保多个线程在同一个时刻,只能有一个线程处于方法或同步块中,保证了线程对变量访问的可见性和排他性。...原创 2020-08-28 17:28:57 · 140 阅读 · 0 评论 -
Daemon守护线程
守护线程是程序运行时在后台提供服务的线程1、设置Daemon属性:Thread.setDaemon(true)在启动线程之前设置2、当所有非守护线程结束时,程序终止,所有守护线程需要立即停止3、main()属于非守护线程4、程序终止时,守护线程中的finally块并一定会执行public class Daemon { public static void main(String[] args) { Thread thread = new Thread(new DaemonRunner()原创 2020-08-27 16:39:06 · 121 阅读 · 0 评论 -
浅拷贝和深拷贝
浅拷贝原始对象和拷贝对象的引用类型引用同一对象深拷贝原始对象和拷贝对象的引用类型引用不同的对象原创 2020-08-16 17:24:20 · 97 阅读 · 0 评论 -
抽象类与接口
抽象类与接口的区别1、从设计层面上:抽象类表示"is a"关系,在Java语言中表示一种继承关系;接口表示"like a"关系2、从使用上:一个类可以实现一个或多个接口,一个类只能扩展一个抽象类3、接口的访问权限必须是public,抽象类可以有多种访问权限4、接口的数据成员是静态的不能被修改(static final),抽象类没有这种限制抽象类一个类中没有包含足够的信息来描绘一个具体的对象1、包含一个或多个抽象方法的类本身必须被声明为抽象的2、抽象类可以包含具体数据和具体方法(非abs原创 2020-08-15 22:15:32 · 133 阅读 · 0 评论 -
把字符型数字转化为整型数字如char ‘9’ 转为 int 9
问题把字符型数字转化为整型数字如char ‘9’ 转为 int 9代码public static void main(String[] args) { char num = '9'; int intNum = num - '0'; System.out.println(num + ":" + intNum); }原创 2020-08-08 21:07:13 · 1993 阅读 · 0 评论 -
使用反射创建数组
使用反射可以动态地创建数组java.lang.reflect包中Array类允许动态地创建数组,其中,newInstance方法可以创建与原数组类型相同的新数组。在调用newInstance方法时,需要传入两个参数,一个是数组的元素类型, 一个是数组的长度。Object newArray == Array.newInstance(ComponentType, newLength);import java.lang.reflect.Array;import java.util.Arrays;pu原创 2020-08-05 22:03:30 · 1016 阅读 · 0 评论