3 EclipseO2

尚未进行身份认证

我要认证

暂无相关简介

等级
TA的排名 7w+

等待和通知机制(wait和notify)

1. 等待和通知机制的实现wait() 方法wait() 是 Object 类的方法,它的作用是使当前执行代码的线程进行等待,该方法将当前线程置入“预执行队列”中,并在 wait() 所在的代码行处停止执行,直到接到通知或者被中断才能继续执行。线程必须获得该对象的对象锁,即只能在同步方法或者同步方法块中调用 wait() 方法,在执行 wait() 方法后,当前线程释放所拥有的对象锁,如果 w...

2019-04-10 23:20:27

Java8 | Optional类

一、什么是Optional类Optional<T> 类是一个容器类,它可以保存类型 T 的值,代表这个值存在。或者仅仅保存 null,代表这个值不存在。原来用 null 表示一个值不存在,现在使用 Optional 可以更好的表达二、Optional类的方法1. 创建Optional类对象的方法Optional.of(T t):创建一个 Optional 实例,对象 t 必...

2019-04-09 21:37:46

Java8 | 关于Stream

一、关于StreamStream 是 Java8 中处理集合的关键抽象概念,它可以指定你希望对集合进行的操作,可以执行非常复杂的查找、过滤和映射数据等操作。使用 Stream API 对集合数据进行操作,就类似于使用 SQL 执行的数据库查询。也可以使用 Stream API 来并行执行操作。简言之,Stream API 提供了一种高效且易于使用的处理数据的方式二、什么是StreamStr...

2019-04-07 16:54:48

Java8 | 方法引用

一、什么是方法引用方法引用就是,当要传递给Lambda体的操作,已经有实现的方法了,就可以使用方法引用方法引用可以看做是Lambda表达式深层次的表达。换句话说,方法引用就是Lambda表达式,也就是函数式接口的一个实例,通过方法的名字来指向一个方法,可以认为是Lambda表达式的一个语法糖要求:实现接口的抽象方法体的参数列表和返回值类型,必须与方法引用的方法的参数列表和返回值类型保持一致...

2019-04-07 16:50:51

Java8 | 函数式接口

一、什么是函数式接口函数式接口便是只包含一个抽象方法的接口,它包含以下内容可以通过 Lambda 表达式来创建该接口的对象。(若 Lambda 表达式抛出一个非运行时异常 ,那么该异常需要在目标接口的抽象方法上进行声明)可以在一个接口上使用 @FunctionalInterface 注解,这样做可以检查它是否是一个函数式接口,同时 javadoc 也会包含一条生命,说明该接口是一个函数式接...

2019-04-04 09:38:40

Java集合中的fail-fast快速失败机制

一、什么是 fail-fast 机制fail-fast 机制是java集合(Collection)中的一种错误机制。当多个线程对同一个集合的内容进行操作时,就可能会产生 fail-fast 事件。例如:当某一个线程A通过 iterator 去遍历某集合的过程中,若该集合的内容被其他线程所改变了;那么线程A访问集合时,就会抛 ConcurrentModificationException 异常,产...

2019-04-03 20:40:31

Java集合 | CopyOnWriteArrayList源码分析(JDK 1.7)

一、基本结构public class CopyOnWriteArrayList<E> implements List<E>, RandomAccess, Cloneable, java.io.Serializable二、基本属性// 加锁的方法,在增加、移除操作的时候都需要加锁transient final ReentrantLock lock = n...

2019-03-31 14:34:11

ArrayList中的Iterator源码分析(JDK 1.7)

一、阐述迭代器接口 Iteratorpublic interface Iterator<E> { boolean hasNext(); E next(); void remove();}该接口有三个方法:hasNext():判断容器内是否还有更多的元素next():返回迭代器刚越过的元素的引用,返回值是 Objectremove(...

2019-03-27 01:22:54

ThreadLocal源码分析

一、实例代码先来看一个使用ThreadLocal的实例,然后再开始我们的讲解class Tools6 { public static ThreadLocal<Integer> intLocal = new ThreadLocal<>(); public static ThreadLocal<String> strLocal = new Th...

2019-03-25 02:25:22

SpringBoot | 访问数据库

一、简介对于数据访问层,无论是 SQL 还是 MySQL,SpringBoot 默认采用整合 Spring Data 的方式进行统一处理,添加了大量自动配置,屏蔽了很多设置,引入各自 xxxTemplate、xxxRepository 来简化我们对数据访问层的操作。对我们来说,只需要进行简单的设置即可二、整合JDBC与数据源1. JDBC<dependencies> ...

2019-03-25 01:45:22

SpringBoot | Web开发

一、SpringBoot配置静态资源1. 使用webjars直接导入静态资源的jar包@Overridepublic void addResourceHandlers(ResourceHandlerRegistry registry) { if (!this.resourceProperties.isAddMappings()) { logger.debug("Def...

2019-03-25 01:40:43

为什么重写了equals方法后还需要重写hashCode方法

分析假如我们创建了一个 People 类,并且重写了其中的 equals 方法public class People { private Integer age; private String name; // getter/setter方法 .... @Override public boolean equals(Object obj) ...

2019-03-16 21:47:04

Java集合 | HashSet(JDK 1.7)

一、基本图示二、基本介绍结构public class HashSet<E> extends AbstractSet<E> implements Set<E>, Cloneable, java.io.SerializableHashSet 继承了 AbstractSet 抽象类,AbstractSet 接口继承了 AbstractCo...

2019-03-03 23:27:19

SpringBoot | Profile的使用

1. 什么是Profile?Profile 可以让 Spring 对不同的环境提供不同配置的功能,可以通过激活、指定参数等方式快速切换环境2. 多Profile文件形式在进行实际开发的时候,分为本地环境、测试环境和生产环境,这就需要配置多个配置文件,如端口号等等,我们当然可以每更换一个环境就改一次配置,但是十分繁琐这个时候就可以多设置几个配置文件,文件名格式可以是 application...

2019-01-08 20:42:38

SpringBoot | 配置文件的注入(二)

1. 使用@PropertySource使用 @PropertySource 注解可以从外部加载指定的配置文件,将配置文件与 JavaBean 相绑定,使 JavaBean 读取配置文件中的值在类路径下创建一个 people.properties 文件people.last-name=张三三people.age=100people.birth=2019/2/3people.boss=f...

2019-01-07 00:25:22

SpringBoot | 配置文件的注入(一)

1.使用@ConfigurationProperties注解给JavaBean赋值我们可以将 xxx.yml 配置文件中的值与 JavaBean 组件绑定,并且将配置文件中的值注入到 JavaBean 中需要导入文件处理器的依赖<!-- 导入配置文件处理器, 将JavaBean与配置文件进行绑定时会有提示 --><dependency> <gr

2019-01-07 00:22:19

SpringBoot | yml配置文件的基本用法

1.ymlyml 是 ymal 语言的文件,以数据为中心,比 json、xml 等格式更加适合作为配置文件2.yaml基本语法使用缩进表示层级关系缩进时不允许使用Tab键,只允许使用空格缩进的空格数目不重要,只要相同层级的元素左侧对齐即可大小写需敏感如:server: port: 8080 path: /helo3.值的写法①. 值是字面值字面量...

2019-01-07 00:15:15

多线程中的停止

一、什么是多线程中的停止?每个线程都有一个中断状态,默认的中断状态都是 false,一个线程可以给另一个线程发送一个中断信号,接收到这个中断信号的线程的中断状态就被置为 true,Java 中的 Thread 类提供了以下几种方法来获取和修改线程的中断状态:void interrupt():将某个线程的中断状态置为 true,不是真正的将线程停止,而是在当前线程中打了一个停止的标记stat...

2018-11-13 16:32:01

使用ReentrantReadWriteLock类

一、使用ReentrantReadWriteLock类类ReentrantLock虽然具有完全互斥排他的效果,即同一时间只有一个线程在执行 lock() 方法后面的任务,虽然可以保证线程的安全性,但是效率却十分低下,所以还有一种读写锁 ReentrantReadWriteLock 类,可以用它来加快运行的效率读写锁共有两个锁,一个是读相关的锁,也称作共享锁,另一个是与写操作相关的锁,也称作排他...

2018-11-12 11:52:45

ReentrantLock类中的方法

ReentrantLock类中的方法ReentrantLock类中有很多的方法:getHoldCount():当前线程调用 lock() 方法的次数getQueueLength():当前正在等待获取 Lock 锁的线程的估计数getWaitQueueLength(Condition condition):当前正在等待状态的线程的估计数,需要传入 Condition 对象hasWaite...

2018-11-05 20:21:48

查看更多

勋章 我的勋章
  • GitHub
    GitHub
    绑定GitHub第三方账户获取
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 1024勋章
    1024勋章
    #1024程序员节#活动勋章,当日发布原创博客即可获得