随笔分类 -  java学习

 
ConcurrentHashMap、synchronized与线程安全
摘要:明明用了ConcurrentHashMap,可是始终线程不安全, 下面我们来看代码: 测试代码跑了10次,每次都不是800。这就很让人疑惑了,难道ConcurrentHashMap的线程安全性失效了? 查了一些资料后发现,原来ConcurrentHashMap的线程安全指的是,它的每个方法单独调用( 阅读全文
posted @ 2017-12-15 10:30 little飞 阅读(3375) 评论(5) 推荐(2)
java 5并发中的阻塞队列ArrayBlockingQueue的使用以及案例实现
摘要:演示一个阻塞队列的使用 部分运行结果如下, 线程Thread-1 准备放数据了 线程Thread-0 准备放数据了 线程Thread-1 已经放完数据了,目前队列有1个数据 线程Thread-0 已经放完数据了,目前队列有2个数据 线程Thread-2 准备取数据了 线程Thread-2 已经取完数 阅读全文
posted @ 2017-09-27 14:06 little飞 阅读(955) 评论(0) 推荐(0)
java 5线程中 Semaphore信号灯,CyclicBarrier类,CountDownLatch计数器以及Exchanger类使用
摘要:先来讲解一下Semaphore信号灯的作用: 可以维护当前访问自身的线程个数,并提供了同步机制, 使用semaphore可以控制同时访问资源的线程个数 例如,实现一个文件允许的并发访问数。 请看下面的演示代码: 执行结果如下: 线程 pool-1-thread-2 进入 ,当前已有 2 个并发 线程 阅读全文
posted @ 2017-09-27 10:50 little飞 阅读(286) 评论(0) 推荐(0)
java中使用ReentrantLock锁中的Condition实现三个线程之间通信,交替输出信息
摘要:本文直接附上源代码,如下是自己写的一个例子 面试题需求: 使用Condition来实现 三个线程 线程1 线程2 线程3 三个交替输出 【按照 线程1(main)-->线程2-->线程3】如此往复50次 请写出程序 输出结果可以自己尝试输出,指定到一个输出文件中,便于查看。 阅读全文
posted @ 2017-09-27 10:18 little飞 阅读(982) 评论(0) 推荐(0)
Java 线程锁机制 -Synchronized Lock 互斥锁 读写锁
摘要:(1)synchronized 是互斥锁; (2)ReentrantLock 顾名思义 :可重入锁 (3)ReadWriteLock :读写锁 读写锁特点: a)多个读者可以同时进行读b)写者必须互斥(只允许一个写者写,也不能读者写者同时进行)c)写者优先于读者(一旦有写者,则后续读者必须等待,唤醒 阅读全文
posted @ 2017-09-27 10:13 little飞 阅读(4564) 评论(2) 推荐(0)
Java终结方法的使用(终结守卫者)
摘要:终结方法finalize()通常是不可预测的,也是很危险的,一般情况下是不必要的。 Java语言规范并不保证finalize()会被及时执行,即不确定终结方法执行时间,只规定在对象被垃圾回收之前执行 不应该依赖终结方法来改变重要的持久状态 终结方法会造成严重的性能损耗 正确使用终结方法 防止用户使用 阅读全文
posted @ 2017-09-14 09:49 little飞 阅读(1608) 评论(0) 推荐(0)
JVM学习之GC常用算法
摘要:GC策略解决了哪些问题? 既然是要进行自动GC,那必然会有相应的策略,而这些策略解决了哪些问题呢,粗略的来说,主要有以下几点。 1、哪些对象可以被回收。 2、何时回收这些对象。 3、采用什么样的方式回收。 GC策略采用的何种算法 有关上面所提到的三个问题,其实最主要的一个问题就是第一个,也就是哪些对 阅读全文
posted @ 2017-09-06 09:12 little飞 阅读(245) 评论(0) 推荐(0)
JSP、Servlet、JDBC学习笔记
摘要:WEB的学习 * 服务器 * 网络的架构(面试题) * C/S client/server 客户端/服务器端 例子:QQ 快播 暴风影音 * 优点:交互性好,服务器压力小。 * 缺点:客户端更新了,下载。 阅读全文
posted @ 2017-08-22 12:56 little飞 阅读(388) 评论(0) 推荐(0)
Java集合---ArrayList的实现原理
摘要:目录: 一、 ArrayList概述 二、 ArrayList的实现 1) 私有属性 2) 构造方法 3) 元素存储 4) 元素读取 5) 元素删除 6) 调整数组容量 7)转为静态数组toArray 总结 一、 ArrayList概述: ArrayList是基于数组实现的,是一个动态数组,其容量能 阅读全文
posted @ 2017-08-22 11:09 little飞 阅读(430) 评论(0) 推荐(2)
java的system.arraycopy()方法
摘要:java.lang.System的静态方法arraycopy()可以实现数组的复制,讲课的老师说这个方法效率比较高,如果数组有成千上万个元素,那么用这个方法,比用for语句循环快不少。于是我试了试,发现以下问题。 如果是复制一个一位数组,那么改变复制后的数组并不影响原数组。但是如果复制一个二维数组, 阅读全文
posted @ 2017-08-11 10:32 little飞 阅读(3808) 评论(0) 推荐(0)
Java中HashMap底层实现原理(JDK1.8)源码分析
摘要:这几天学习了HashMap的底层实现,但是发现好几个版本的,代码不一,而且看了Android包的HashMap和JDK中的HashMap的也不是一样,原来他们没有指定JDK版本,很多文章都是旧版本JDK1.6.JDK1.7的。现在我来分析一哈最新的JDK1.8的HashMap及性能优化。 在JDK1 阅读全文
posted @ 2017-08-11 09:55 little飞 阅读(56004) 评论(8) 推荐(29)
Java中常见数据结构:list与map -底层如何实现
摘要:1:集合(自己补齐) Collection(单列集合) List(有序,可重复) ArrayList底层数据结构是数组,查询快,增删慢线程不安全,效率高Vector底层数据结构是数组,查询快,增删慢线程安全,效率低LinkedList底层数据结构是链表,查询慢,增删快线程不安全,效率高Set(无序, 阅读全文
posted @ 2017-08-11 09:48 little飞 阅读(792) 评论(0) 推荐(0)
java中的异常以及 try catch finally以及finally的执行顺序
摘要:java中的 try、catch、finally及finally执行顺序详解: 1、首相简单介绍一下异常以及异常的运行情况: 在Java中异常的继承主要有两个: Error和Exception 这两个,而Error就是jvm出现错误,以及系统奔溃等现象这些错误没办法通过程序来处理,所以在程序中不能使 阅读全文
posted @ 2017-06-09 16:46 little飞 阅读(13613) 评论(0) 推荐(1)
有序的map LinkedHashMap
摘要:HashMap是无序的,HashMap在put的时候是根据key的hashcode进行hash然后放入对应的地方。所以在按照一定顺序put进HashMap中,然后遍历出HashMap的顺序跟put的顺序不同(除非在put的时候key已经按照hashcode排序号了,这种几率非常小)单纯的HashMa 阅读全文
posted @ 2017-05-18 17:47 little飞 阅读(954) 评论(0) 推荐(0)