YellowStar的博客

每天学习一点点,每天提升一点点

java集合 -- (6)关于集合的ConcurrentModificationException 异常

一、关于集合中ConcurrentModificationException异常 研究过java集合的人应该经常在集合源码中见到下面这段代码: if (modCount != expectedModCount) throw new ConcurrentModi...

2018-11-19 17:15:36

阅读数 43

评论数 0

java集合 -- (5)集合 Map

前面已经介绍完了Collection接口下的集合实现类,今天我们来介绍Map接口下的两个重要的集合实现类HashMap,TreeMap。关于Map的一些通用介绍,可以参考第一篇文章。由于Map与List、Set集合的某些特性有重合,因此观看本篇文章的会参考到之前的一些内容。如果已经有这方面的基础...

2018-11-16 17:36:53

阅读数 55

评论数 0

java集合 -- (4)集合 Queue

今天我们来介绍下集合Queue中的几个重要的实现类。关于集合Queue中的内容就比较少了。主要是针对队列这种数据结构的使用来介绍Queue中的实现类。 Queue用于模拟队列这种数据结构,队列通常是指“先进先出”(FIFO)的容器。新元素插入(offer)到队列的尾部,访问元素(poll)操...

2018-11-16 16:30:20

阅读数 36

评论数 0

java集合 -- (3)集合 List

第一篇文章中介绍了List集合的一些通用知识。本篇文章将集中介绍了List集合相比Collection接口增加的一些重要功能以及List集合的两个重要子类ArrayList及LinkedList。 一、List集合 关于List集合的介绍及方法,可以参考第一篇文章。 List集合判断元素...

2018-11-16 15:51:32

阅读数 77

评论数 0

java集合 -- (2)集合 Set

上一篇文章介绍了Set集合的通用知识。Set集合中包含了三个比较重要的实现类:HashSet、TreeSet和EnumSet。本篇文章将重点介绍这三个类。 一、HashSet类 HashSet简介 HashSet是Set接口的典型实现,实现了Set接口中的所有方法,并没有添加额外的方法,...

2018-11-15 15:52:57

阅读数 58

评论数 0

java集合 -- (1)集合框架 Collection、Map

本篇文章主要对java集合的框架进行介绍,使大家对java集合的整体框架有个了解。具体介绍了Collection接口,Map接口以及Collection接口的三个子接口Set,List,Queue。 Java集合类简介: Java集合大致可以分为Set、List、Queue和Map四种体系...

2018-11-15 15:39:57

阅读数 53

评论数 0

数据结构与算法系列

转载:http://www.cnblogs.com/skywang12345/p/3603935.html

2018-11-15 15:19:54

阅读数 25

评论数 0

JUC学习笔记 -- (12) Semaphore的用法

在并发编程中,Semaphore也是常用的一个辅助类。 Semaphore翻译成字面意思为 信号量,Semaphore可以控制同时访问的线程个数,通过 acquire() 获取一个许可,如果没有就等待,而 release() 释放一个许可。   Semaphore类位于java.util.co...

2018-11-12 16:35:34

阅读数 27

评论数 0

JUC学习笔记 -- (11) CyclicBarrier介绍及其与CountDownLatch的区别

CyclicBarrier是多线程中一个常用的辅助类,主要用于线程组内部之间的线程的相互等待问题。  CyclicBarrier根据英文拆分翻译可翻译为:可循环利用的屏障。顾名思义,首先,便是可重复利用,说明该类创建的对象可以复用;其次,屏障则体现了该类的原理:每个线程执行时,都会碰到一个屏障,...

2018-11-12 16:15:19

阅读数 19

评论数 0

JUC学习笔记 -- (10) 线程池

为什么用线程池 创建/销毁线程伴随着系统开销,过于频繁的创建/销毁线程,会很大程度上影响处理效率 例如: 记创建线程消耗时间T1,执行任务消耗时间T2,销毁线程消耗时间T3 如果T1+T3>T2,那么是不是说开启一个线程来执行这个任务太不划算了! 正...

2018-10-25 16:52:38

阅读数 72

评论数 0

JUC学习笔记 -- (9) ReadWriteLock读写锁的使用

  说到Java并发编程,很多开发第一个想到同时也是经常常用的肯定是Synchronized,但是Synchronized存在明显的一个性能问题就是读与读之间互斥,简言之就是,我们编程想要实现的最好效果是,可以做到读和读互不影响,读和写互斥,写和写互斥,提高读写的效率,这就要用到本章的重点Read...

2018-10-24 19:33:54

阅读数 43

评论数 0

Cannot refer to a non-final variable xx inside an inner class defined in a different method的原因

今天遇到一个小问题,下面是网上摘抄的解释: 为了说明这个问题,先得明白说明是局部内部类,局部内部类就是在外部类的方法中定义的类。那么标题中的错误指的是,内部类不能引用该方法中非 final 修饰的变量。 那么为什么呢? 因为生命周期的原因。方法中的局部变量,方法结束后这个变量就要释放掉,fi...

2018-10-24 17:27:22

阅读数 64

评论数 0

JUC学习笔记 -- (8) 多线程并发之生产者消费者模式的两种实现

生产者消费者模式是并发、多线程编程中经典的设计模式,生产者和消费者通过分离的执行工作解耦,简化了开发模式,生产者和消费者可以以不同的速度生产和消费数据。   真实世界中的生产者消费者模式 生产者和消费者模式在生活当中随处可见,它描述的是协调与协作的关系。比如一个人正在准备食物(生产者),而另...

2018-10-23 17:49:17

阅读数 47

评论数 0

JUC学习笔记 -- (7) Condition-线程通信

关于线程通信,使用synchronized时使用wait、notify和notifyAll来实行线程通信。而使用Lock如何处理线程通信呢?答案就是本片的主角:Condition. Condition 将 Object 监视器方法(wait、notify 和 notifyAll)分解成截然不同的...

2018-10-23 17:14:26

阅读数 33

评论数 0

JUC学习笔记 -- (6) Lock锁初探

首先我们来回忆一下上一节讲过的synchronized关键字,该关键字用于给代码段或方法加锁,使得某一时刻它修饰的方法或代码段只能被一个线程访问。那么试想,当我们遇到这样的情况:当synchronized修饰的方法或代码段因为某种原因(IO异常或是sleep方法)被阻塞了,但是锁有没有被释放,那么...

2018-10-22 12:05:06

阅读数 50

评论数 0

JUC学习笔记 -- (5) 线程创建的第三种方式Callable

创建线程的两种方式,一种是直接继承Thread,另外一种就是实现Runnable接口。 这两种方式都有一个缺陷就是:在执行完任务之后无法获取执行结果。 如果需要获取执行结果,就必须通过共享变量或者使用线程通信的方式来达到效果,这样使用起来就比较麻烦。 而自从Java 1.5开始,就产生了第三种方...

2018-10-22 11:44:37

阅读数 27

评论数 0

JUC学习笔记 -- (4) CountDownLatch闭锁

CountDownLatch类位于java.util.concurrent包下,利用它可以实现类似计数器的功能。比如有一个任务A,它要等待其他4个任务执行完毕之后才能执行,此时就可以利用CountDownLatch来实现这种功能了。 CountDownLatch类只提供了一个构造器: pub...

2018-10-22 11:22:50

阅读数 33

评论数 0

JUC学习笔记 -- (3)同步容器类和并发容器类

一、同步容器类 包括Vector(实现了一个动态数组,和ArrayList相似,但两者是不同的)和Hashtable。 同步容器类的问题: 例如:Vector的getLast方法,和deleteLast方法,都会执行“先检查,后执行”操作,每个方法首先都获得数组的大小,然后通过结果来获取或删...

2018-10-22 10:55:24

阅读数 29

评论数 0

JUC学习笔记 -- (2)并发编程的3个概念 ,原子性,可见性,有序性!

并发编程中的三条性质:原子性,可见性,有序性 1.原子性 原子性:即一个操作或者多个操作 要么全部执行并且执行的过程不会被任何因素打断,要么就都不执行。即整体不可分割。 在Java中,对基本数据类型(例外就是long和double的非原子协定)的变量的读取和赋值操作是原子性操作。 X=10...

2018-10-21 12:22:38

阅读数 20

评论数 0

JUC学习笔记 -- (1)Volatile和内存可见性

一、内存可见性 可见性:一个线程对共享变量值的修改,能够及时地被其他线程看到。 共享变量:如果一个变量在多个线程的工作内存中都存在副本,那么这个变量就是这几个线程的共享变量。 Java内存模型(JMM) Java内存模型(Java Memory Model)描述了Java程序中各种变量(线...

2018-10-19 17:03:52

阅读数 37

评论数 0

提示
确定要删除当前文章?
取消 删除
关闭
关闭