摘要: BIO、NIO、AIO > Block-IO : inputStream 和OutputStream,Reader和Writer 1个连接,启动一个线程,这样导致很大的线程开销 NIO的特点是:应用程序要不断地询问内核,是否已经准备好。 第一阶段“”反复查看数据:是非阻塞的 第二阶段:拷贝数据阻塞等 阅读全文
posted @ 2019-04-10 22:13 邂逅那青春-VING 阅读(187) 评论(0) 推荐(0)
摘要: java.util.concurrent : 提供了并发编程的解决方案 1、CAS 是java.util.concurrent.atomic包的基础 2、AQS是java.util.concurrent.locks包以及一些常用类,比如:Semophore ,ReentrantLock等类的基础 J 阅读全文
posted @ 2019-04-10 17:48 邂逅那青春-VING 阅读(324) 评论(0) 推荐(0)
摘要: Hashtable 1、早期java类库提供的哈希表的实现 2、线程安全:涉及到修改Hashtable的方法,使用synchronized修饰 3、串行化的方式运行,性能较差 问题:如何优化Hashtable? > 1、通过锁细粒度化,将整锁拆解成多个锁进行优化 总结: 比起Segment,锁拆得更 阅读全文
posted @ 2019-04-10 16:59 邂逅那青春-VING 阅读(271) 评论(0) 推荐(0)
摘要: 问题:HashMap 、HashTable、ConccurentHashMap的区别? 》 hashMap(JAVA8以前):数组+链 每个数据中保存的是,链表的头节点。实际上hashMap是通过位运算来获取头部信息,比hash算法的效率高。 HashMap(Java9及以后):数组+链表+红黑色 阅读全文
posted @ 2019-04-10 16:00 邂逅那青春-VING 阅读(193) 评论(0) 推荐(0)
摘要: 工作中消失而面试却长存的算法与数据结构 1、优秀的算法和数据结构被封装到了Java的集合框架之中 数据结构考点: 1、数组和链表的区别 2、链表的操作,如反转,链表环路检测,双向链表,循环链表相关操作 3、队列,栈的应用 4、二叉树的遍历方式以其递归和非递归的实现 5、红黑色的旋转 算法考点: 1、 阅读全文
posted @ 2019-04-10 00:51 邂逅那青春-VING 阅读(187) 评论(0) 推荐(0)
摘要: 问题:怎样避免重复创建线程,销毁线程这些动作呢? 》可以使用Java 线程池 利用Executors创建不同的线程池满足不同场景的需求 1、newFixedThreadPool(int n Threads) >指定工作线程数量的线程池 2、newCachedThreadPool() >处理大量短时间 阅读全文
posted @ 2019-04-09 17:46 邂逅那青春-VING 阅读(203) 评论(0) 推荐(0)
摘要: synchronized是悲观锁 注意:实现了CAS的有原子类(AtomicInteger,AtomicLong,等等原子类) CAS 是乐观锁,一种高效实现线程安全性的方法 1、支持原子更新操作,适用于计数器,序列发生器等场景 2、属于乐观锁机制,号称lock-free 3、CAS操作失败时由开发 阅读全文
posted @ 2019-04-09 16:34 邂逅那青春-VING 阅读(269) 评论(0) 推荐(0)
摘要: Java内存模型JMM Java内存模型(即Java Memory Model , 简称JMM),本身是一种抽象的概念,并不真实存在,它描述的是一组规则或规范,通过这组规范定义了程序个各个变量(包括实例字段,静态字段和构成数组对象的元素)的访问方式 由于JVM运行时程序的实体是线程,而每个线程创建时 阅读全文
posted @ 2019-04-09 15:53 邂逅那青春-VING 阅读(425) 评论(0) 推荐(0)
摘要: 历史知识:JDK5之前,只有synchronized 可以用,之后就有了ReetrantLock可以用了 ReetrantLock (再入锁) 1、位于java.util.concurrnt.locks 包 juc包 2、和CountDownLatch、FutureTask、Semaphore一样基 阅读全文
posted @ 2019-04-09 12:13 邂逅那青春-VING 阅读(677) 评论(0) 推荐(0)
摘要: 问题:为什么Redis能这么快? 》 1、完全基于内存,绝大部分请求是纯粹的内存操作,执行效率高 2、数据结构简单,对数据操作也简单 3、采用单线程,单线程也能处理高并发请求,想多核也可启动多实例 (为什么redis要采用单线程这个设计呢?) 》准确来说,redis的单线程结构是指主线程是单线程的, 阅读全文
posted @ 2019-04-08 21:15 邂逅那青春-VING 阅读(131) 评论(0) 推荐(0)