2 EclipseO2

尚未进行身份认证

暂无相关简介

等级
TA的排名 8w+

等待和通知机制(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(Tt):创建一个Optional实例,对象t必...

2019-04-09 21:37:46

Java8 | 关于Stream

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

一、基本结构publicclassCopyOnWriteArrayList<E>implementsList<E>,RandomAccess,Cloneable,java.io.Serializable二、基本属性//加锁的方法,在增加、移除操作的时候都需要加锁transientfinalReentrantLocklock=n...

2019-03-31 14:34:11

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

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

2019-03-27 01:22:54

ThreadLocal源码分析

一、实例代码先来看一个使用ThreadLocal的实例,然后再开始我们的讲解classTools6{publicstaticThreadLocal<Integer>intLocal=newThreadLocal<>();publicstaticThreadLocal<String>strLocal=newTh...

2019-03-25 02:25:22

SpringBoot | 访问数据库

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

2019-03-25 01:45:22

SpringBoot | Web开发

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

2019-03-25 01:40:43

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

分析假如我们创建了一个People类,并且重写了其中的equals方法publicclassPeople{privateIntegerage;privateStringname;//getter/setter方法....@Overridepublicbooleanequals(Objectobj)...

2019-03-16 21:47:04

Java集合 | HashSet(JDK 1.7)

一、基本图示二、基本介绍结构publicclassHashSet<E>extendsAbstractSet<E>implementsSet<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:8080path:/helo3.值的写法①.值是字面值字面量...

2019-01-07 00:15:15

多线程中的停止

一、什么是多线程中的停止?每个线程都有一个中断状态,默认的中断状态都是false,一个线程可以给另一个线程发送一个中断信号,接收到这个中断信号的线程的中断状态就被置为true,Java中的Thread类提供了以下几种方法来获取和修改线程的中断状态:voidinterrupt():将某个线程的中断状态置为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(Conditioncondition):当前正在等待状态的线程的估计数,需要传入Condition对象hasWaite...

2018-11-05 20:21:48

查看更多

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