JAVA进阶
tendollors
这个作者很懒,什么都没留下…
展开
-
初步理解反射机制
秉承万物皆对象的思想,java类加载到内存空间后,类本身可以被当作对象读取到,类所包含的成员变量,方法,构造方法等都可以作为对象读到内存中,我们拿到这些对象后可以用反射的方式对对象进行各种操作。这也是各个框架的实现原理。 获取Class对象的方式有三种: 1. Class.forName("全类名"):将字节码⽂件加载进内存,返回Class对象 2.类名.class:通过类名。属性class来获取类对象 3.对象名.getClass()方法获取对象所属类对象 结论:同⼀个字节码⽂件(*.c原创 2022-01-13 19:07:11 · 122 阅读 · 0 评论 -
java进阶之ConcurrentHashMap
初始容量默认为16段(Segment),使⽤分段锁设计。 不对整个Map加锁,⽽是为每个Segment加锁。 当多个对象存⼊同⼀个Segment时,才需要互斥。 最理想状态为16个对象分别存⼊16个Segment,并⾏数量16。 使⽤⽅式与HashMap⽆异。 ...原创 2022-01-13 11:04:58 · 121 阅读 · 0 评论 -
JAVA进阶之CopyOnArrayList,线程安全集合
CopyOnWriteArrayList使⽤了⼀种叫写时复制的⽅法,当有新元素添加到CopyOnWriteArrayList时, 先从原有的数组中拷⻉⼀份出来,然后在新的数组做写操作,写完之后,再将原来的数组引⽤指向到新 数组。 CopyOnWriteArrayList 的整个add操作都是在锁的保护下进⾏的。 这样做是为了避免在多线程并 发add的时候,复制出多个副本出来,把数据搞乱了,导致最终的数组数据不是我们期望的。 由于所有的写操作都是在新数组进⾏的,这个时候如果有线程并发的写,则通过锁来控原创 2022-01-13 10:41:34 · 3101 阅读 · 0 评论 -
JAVA进阶之线程死锁
多个线程互相都在等待对方释放锁就叫死锁。原创 2022-01-12 09:52:20 · 168 阅读 · 0 评论 -
JAVA进阶-线程等待唤醒机制
线程之间除了抢占式调用这种竞争的关系外还有一种合作的关系,如何使多个线程协调一致,有序的完成一件事情,这里就用到了线程的等待唤醒机制。 package com.rxsoft.part11; //顾客线程和老板线程说,我要什么 //老板线程给顾客线程相应的产品 public class Demo { public static void main(String[] args) { Object lock=new Object(); //充当协调者的角色 new原创 2022-01-11 16:31:42 · 230 阅读 · 0 评论 -
JAVA进阶之ReenTrantLock
import java.util.concurrent.locks.ReentrantLock; /** * Created by haicheng.lhc on 17/05/2017. * * @author haicheng.lhc * @date 2017/05/17 */ public class ReentrantLockTest extends Thread { public static ReentrantLock lock = new ReentrantLoc...转载 2022-01-11 13:45:53 · 124 阅读 · 0 评论 -
java进阶之treeset
如果要添加到treeset集合中,那么该对象的类必须实现Comparabel接口,并且重写compareTo<T>这个比较方法,这样的话treeset集合才能进行排序 @Override public int compareTo(Cat o){ if(this.getAge()>o.getAge()) { return 1; }else if (this.getAge()<o.getAge()) { return -1; } ...原创 2022-01-04 22:42:49 · 173 阅读 · 0 评论 -
java进阶之Set集合
Set集合无序不可重复,而List集合有序可以重复 如果希望自定义类型的成员相同时不允许重复添加,需要重写自定义类型的hashCode()和equals()方法 hashCode()通过Objects.hash(Object...o)把需要判断重复的字段传入 来计算出hash值 ...原创 2022-01-03 23:41:25 · 92 阅读 · 0 评论 -
java进阶ArrayList和LinkedList区别
ArrayList底层是数组结构,具有下标索引所以查找快,由于日常开发中使用最多的是查询遍历数据 所以ArrayList最常见 数组结构的特点是长度固定,如果要新增元素的话需要创建一个新数组,然后把新数组的数据复制过来,在堆中频繁创建删除数组,效率低下 LinkedList底层是链表结构,方便元素的新增和删除,访问和遍历相对于ArrayList较慢 ...原创 2022-01-03 23:13:40 · 239 阅读 · 0 评论 -
java进阶泛型
定义类,方法,集合等数据类型 类定义 package com.rxsoft.part; public class Point <T>{ private T x; private T y; private T z; public T getX() { return x; } public void setX(T x) { this.x = x; } public T getY() {原创 2022-01-03 22:41:15 · 75 阅读 · 0 评论