![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java
文章平均质量分 67
虚控一着
追求优雅的人生和代码
展开
-
Java集合基础篇(3)-HashSet基本用法
HashSet实现Set接口。 Set是一个不包含重复元素的集合接口, 集合中的元素不按特定的方式排序。 实现Set接口的类: HashSet用法:原创 2017-06-28 21:19:54 · 400 阅读 · 0 评论 -
Java并发之线程同步
Synchronized关键字1,用于方法上 2,用于代码块上: 必须通过一个对象引用作为参数。只有一个线程可以访问那个对象的synchronized代码(代码 块或方法)。通常,我们将使用this关键字引用执行该方法的对象。 synchronized (this) { }synchronized()保护代码块时,如果使用对象作为参数,而不是this JVM可以保证只有一个线程可以访问那个对原创 2017-12-19 16:18:48 · 187 阅读 · 0 评论 -
Java并发之线程管理
最近有朋友问到Java并发 我觉得有必要对并发的知识做个总结 从这篇开始,我会整理一系列的并发相关的原创 2017-12-19 15:43:21 · 244 阅读 · 0 评论 -
JVM常见的内存溢出
那些区域会发生内存溢出? 除了程序计数器,其他几块运行时数据区都有可能发生内存溢出。 堆溢出报错:java.lang.OutOfMemoryError: Java heap space 碰到这个问题,从两个方面入手: 1,判断是否是内存泄露。 通过内存分析工具对堆快照进行分析。如何分析请看本文的[Dump分析内存]章节,有详细的说明。 2,如果不是内存泄露。 检查堆参数:-Xmn -原创 2017-12-27 16:10:35 · 676 阅读 · 0 评论 -
Java8之方法引用
在Lambda表达式里,经常会有这样的代码artist -> artist.getName()就是lambda表达式里面调用了一个已存在的方法: getName() java8可以直接通过方法引用来简写lambda表达式中已经存在的方法,这种特性就叫方法引用。原创 2017-12-23 22:07:05 · 562 阅读 · 0 评论 -
Java8之Stream
Java8中的Stream是对集合对象功能的增强。 Stream API和Lambda表达式极大的提高对集合类操作编程效率和程序可读性。 内部迭代先看看外部迭代: 通过外部的迭代器来遍历集合。原创 2017-12-23 22:06:35 · 173 阅读 · 0 评论 -
Java8之函数式接口
在我的上一篇java8基础入门的文章中说了函数式接口的基本概念,这里介绍下JDK提供的一些重要的函数式接口:重要的函数式接口原创 2017-12-23 12:43:40 · 382 阅读 · 0 评论 -
Java8函数式编程入门
虽然最近java9都已经发布了。但是目前很多同学连java8都没有用到。 java8增加了很多有用的特性,对于大家的编程还是有很大帮助的。没有用过java8的同学还是非常有必要了解一下这些新特性的。 java8有个很重要的改变:增加了函数式编程(Lambda表达式)。 相比以前的Java新特性,lambda表达式对于从没接触函数式编程的Java程序员来说,并不是很好理解。因此我这儿特意一些分享原创 2017-12-22 14:29:51 · 908 阅读 · 0 评论 -
Java并发之构建异步任务
有个小朋友表示我写的并发文章,不够细,看了还是不太明白。 我的写作水平实在有限,泪奔。 后面我尽量写的详细简单,尽量多讲点例子。 异步对应的就是同步。 同步的程序大家写的非常的多,同步就是指程序对所有的操作都是串行的处理。一系列的任务A,B,C,D…必须一个一个的处理。 而异步则是可以并发同时处理多个任务。 举个栗子吧。 某个网站的用户提交注册需要以下几步: 1,调用用户服务,写入数原创 2017-12-22 14:29:18 · 3733 阅读 · 0 评论 -
Java并发之对象共享
Java并发里面有两个很关键的点: 一是,使用同步来避免多线程间同一时刻访问同样的数据。 二是,线程间的通信和数据的共享。 前面的文章已经讲过了同步的机制。 这篇文章会介绍数据的共享。主要从几个方面:原创 2017-12-21 15:42:17 · 323 阅读 · 0 评论 -
Java并发之执行器和线程池
执行器Executor用来管理Thread对象,简化并发编程 Executor的子接口是ExecutorService原创 2017-12-20 14:46:41 · 281 阅读 · 0 评论 -
Java并发之同步工具
BlockingQueue阻塞队列阻塞队列一般用于生产-消费模式:生产者把数据放入队列,消费者处理数据 put()方法插入数据,如果队列已满,阻塞,直到有可用空间; take()方法获取数据,如果队列为空,阻塞,直到有可用元素; offer(),poll()也是插入获取元素,和put,take不同的是,offer,poll不会阻塞,操作失败时,返回失败状态; offer,poll方法,支持定原创 2017-12-20 14:45:22 · 154 阅读 · 0 评论 -
Java集合基础篇(2)-ArrayList基本用法
ArrayList实现List接口。 List是一组有序的对象的集合,其大小能按需变化,允许出现重复的元素。实现List接口的类: 类 说明 使用场景 ArrayList 相当于一个大小可变的动态数组 快速随机访问元素 LinkedList List的双向列表实现, 高效的插入和删除 快速插入,删除元素 Vector 不建议使用 Stack原创 2017-06-22 23:49:06 · 202 阅读 · 0 评论 -
Java集合基础篇(1)-基本介绍
本章介绍最基本的概念,和最常用的集合接口/类。为什么要有Java集合? 在开发过程中, 当我们需要对一组数据进行管理的时候, 我们需要有一种数据结构来保存这一组对象. 如果没有集合, 我们可以用数组来实现. 但用数组来实现, 问题在于, 数组一旦定义, 其元素个数是固定, 不能动态增长。 还有,我要实现稍微复杂点的算法, 使用数组也是很难实现的。 于是就有了集合。 Java提供了一套完整强原创 2017-06-21 16:11:56 · 193 阅读 · 0 评论 -
Java集合基础篇(4)-HashMap基本用法
HashMap实现Map接口, 以键/值对的形式存储数据。根据Hash算法来计划key-value的位置。 可以实现快速的存取。原创 2017-06-28 21:34:33 · 229 阅读 · 0 评论 -
Java并发之死锁
简单聊一下死锁。 当一个线程永远的持有一个锁,并且其他线程都尝试获得这个锁,就会发生死锁。 如果发生死锁,通常JVM没有办法自动恢复,只能重启。对线上系统来说,这是灾难性的。死锁的发生场景、例子1,最简单的例子: 线程A持有锁1并尝试获得锁2,线程B占有锁2并尝试获得锁1。两个线程将会永远的等待下去。 2,多个线程,持有锁的同时,尝试获得对方的锁,形成一个复杂的环状依赖。这些线程都将无限的原创 2017-12-19 16:20:41 · 204 阅读 · 0 评论