07 2016 档案

摘要:http://blog.csdn.net/hguisu/article/details/7776068 阅读全文
posted @ 2016-07-31 21:28 YDDMAX 阅读(107) 评论(0) 推荐(0)
摘要:1、http://blog.csdn.net/ol_beta/article/details/6192382 本博客通过示例演示讲解了List<T>,编译器在编译之后,T本质就是一个Object。该例子值得一看 JDK1.5增加的新特性里面有一个就是泛型。对于泛型的评价,褒贬不一,废话不多说,先来看 阅读全文
posted @ 2016-07-30 23:15 YDDMAX 阅读(286) 评论(0) 推荐(0)
摘要:3、通道 Channle主要分为两类:File操作对应的FIleChannel和Stream操作对应的socket的3个channe。 1、这3个channel都是抽象类。其具体实现在SPI里面。 2、这3个channel都是双向的,都实现了ByteChannel。 3、网络Channel可工作在非 阅读全文
posted @ 2016-07-18 09:43 YDDMAX 阅读(875) 评论(0) 推荐(0)
摘要:1、缓冲区的构成 2、缓冲区的类图 3、ByteBuffer ByteBuffer是直接和Channel打交道的,准确的是直接字节缓冲。 问题:直接字节缓冲区和内存映射的关系 4、ByteOrder 包含了当前CPU的ByteOrder ByteBuffer能设置ByteOrder,其他的Buffe 阅读全文
posted @ 2016-07-17 10:34 YDDMAX 阅读(280) 评论(0) 推荐(0)
摘要:http://www.cnblogs.com/fsjohnhuang/p/4040785.html 一、前言 编码时我们总会发现如下变量未被使用的警告提示: 上述代码编译通过且可以运行,但每行前面的“感叹号”就严重阻碍了我们判断该行是否设置的断点了。这时我们可以在方法前添加 @SuppressWar 阅读全文
posted @ 2016-07-15 09:04 YDDMAX 阅读(2174) 评论(1) 推荐(1)
摘要:1、select、epoll区别 http://www.cnblogs.com/Anker/p/3265058.html (1)每次调用select,都需要把fd集合从用户态拷贝到内核态,这个开销在fd很多时会很大 (2)同时每次调用select都需要在内核遍历传递进来的所有fd,这个开销在fd很多 阅读全文
posted @ 2016-07-15 00:11 YDDMAX 阅读(202) 评论(0) 推荐(0)
摘要:http://www.cnblogs.com/YDDMAX/p/5658607.html http://www.cnblogs.com/YDDMAX/p/5658668.html synzhronized原理 阅读全文
posted @ 2016-07-10 21:57 YDDMAX 阅读(133) 评论(0) 推荐(0)
摘要:http://www.infoq.com/cn/articles/java-se-16-synchronized 1 引言 在多线程并发编程中Synchronized一直是元老级角色,很多人都会称呼它为重量级锁,但是随着Java SE1.6对Synchronized进行了各种优化之后,有些情况下它并 阅读全文
posted @ 2016-07-10 21:48 YDDMAX 阅读(541) 评论(0) 推荐(0)
摘要:http://www.jianshu.com/p/5dbb07c8d5d5 原理 通常说的synchronized在方法或块上加锁,这里的锁就是对象锁(当然也可以在类上面),或者叫重量锁,在JVM中又叫对象监视器(Monitor),就是对象来监视线程的互斥。 先来回顾一下对象在堆里的逻辑结构: 对象 阅读全文
posted @ 2016-07-10 21:28 YDDMAX 阅读(4613) 评论(0) 推荐(0)
摘要:http://mp.weixin.qq.com/s?__biz=MjM5NzMyMjAwMA==&mid=2651477305&idx=1&sn=185bc510e4011b3de9fc631bd90ffea1&scene=0#wechat_redirect 引文 4 月份的时候看到一道面试题,据说 阅读全文
posted @ 2016-07-10 10:47 YDDMAX 阅读(378) 评论(0) 推荐(1)
摘要:摘要 介绍使用eclipse调试jdk源码 java是一门开源的程序设计语言,喜欢研究源码的java开发者总会忍不住debug一下jdk源码。虽然官方的jdk自带了源码包src.zip,然而在debug时查看变量却十分麻烦。例如调试HashMap的 public V put(K key, V val 阅读全文
posted @ 2016-07-09 19:53 YDDMAX 阅读(201) 评论(0) 推荐(0)
摘要:1、java中的每个对象都可作为锁,有三种表现形式: 对于普通方法,锁的是当前this对象。 对于静态方法,锁的是class对象 对于方法块,锁的是synchronized指定的对象。 2、JVM基于Monitor对象来实现昂发的同步和代码块同步,但是实现细节不一样。代码块同步是使用monitore 阅读全文
posted @ 2016-07-08 08:28 YDDMAX 阅读(292) 评论(0) 推荐(0)
摘要:http://ifeve.com/memory-barriers-or-fences/ 内存屏障提供了两个功能。 1、首先,它们通过确保从另一个CPU来看屏障的两边的所有指令都是正确的程序顺序,而保持程序顺序的外部可见性;(处理器指令冲排序) 2、其次它们可以实现内存数据可见性,确保内存数据会同步到 阅读全文
posted @ 2016-07-07 09:49 YDDMAX 阅读(416) 评论(0) 推荐(0)
摘要:第一章 简介 第二章 缓冲区 第三章 channel 阅读全文
posted @ 2016-07-07 09:18 YDDMAX 阅读(140) 评论(0) 推荐(0)
摘要:1.2 CPU已不再是束缚 相反,是JVM 自身在I/O 方面效率欠佳。操作系统与Java 基于流的I/O模型有些不匹配。 操作系统要移动的是大块数据(缓冲区),这往往是在硬件直接存储器存取(DMA)的协助下完成的。而JVM 的I/O 类喜欢操作小块数据——单个字节、几行文本。 结果,操作系统送来整 阅读全文
posted @ 2016-07-06 16:33 YDDMAX 阅读(285) 评论(0) 推荐(0)
摘要:问题:Thread.join的代码如下,为什么没有加锁却可以wait?另外下面的代码说明线程结束的时候会signal正在wait的线程,实际是signalAll()。 while(isAlive()){ wait(0); } 并发工具类(提供超时等重载方法,含有查询线程排队和统计的接口) 1、Cou 阅读全文
posted @ 2016-07-05 22:42 YDDMAX 阅读(181) 评论(0) 推荐(0)
摘要:自己的总结: 1、原子类的核心是循环CAS,其中CAS使用的是unsafe类里面的3种CAS。 2、原子类共分为4类 3、CAS会带来ABA问题,所以直接使用原子类也有ABA问题。但是使用AtomicStampedReference 可以解决这个问题。 4、自己对CAS的理解:含义像下面的代码那样, 阅读全文
posted @ 2016-07-05 22:32 YDDMAX 阅读(696) 评论(0) 推荐(0)
摘要:第7章:JAVA中的13个原子操作类 第8章:JAVA中的并发工具类 第9章:JAVA中的线程池 阅读全文
posted @ 2016-07-05 22:08 YDDMAX 阅读(284) 评论(0) 推荐(0)
摘要:1、线程池优点 1、降低资源消耗 降低线程的创建和销毁造成的消耗 2、提高响应速度 不需要先创建线程再运行 3、提高线程的可管理性 使用线程池可以统一分配,调优和监控。 2、线程池的流程 如果当前运行的线程少于corePoolSize,则创建新线程来执行任务(这一个过程需要获取全局锁) 如果当前运行 阅读全文
posted @ 2016-07-05 22:05 YDDMAX 阅读(360) 评论(0) 推荐(0)
摘要:1、结构 使用的是PriorityQueue来作为底层的存储 元素需要实现Delayed接口,该接口继承了comparable接口 DelayQueue的队头元素是根据comparable排在队首的元素 无论是入队还是出队都是先加锁,也就是异步进行的。 2、add,put,offer操作底层都是调的 阅读全文
posted @ 2016-07-05 16:14 YDDMAX 阅读(225) 评论(0) 推荐(0)
摘要:优先级队列 1、无限的 2、不允许null 3、在构造queue或者元素需要实现comparable接口 4、数据结构是堆,而且是极小堆。存储是数组。 An unbounded priority queue based on a priority heap. The elements of the 阅读全文
posted @ 2016-07-05 16:05 YDDMAX 阅读(120) 评论(0) 推荐(0)
摘要:CAS有两个特点: 1、for循环 2、compareAndSet(可能别的线程先改变然后又重置,此时CAS是成功的,也就是CAS执行的过程中,可能多个线程对此变量做了修改,而不是各个线程互斥的修改) 3、CAS和互斥锁不同,CAS可以多个线程同时执行成功。 Thread.join() 下面是源码。 阅读全文
posted @ 2016-07-04 22:18 YDDMAX 阅读(210) 评论(0) 推荐(0)
摘要:1、核心原理是分段加锁 2、Map->Sergent[](使用的是ReentrantLock的非公平模式)->HashEntry[] 3、get操作使用volatile进行了无锁化设计,需要分析下为什么? 4、put操作是串行的,加锁了。 5、分析下hash算法 阅读全文
posted @ 2016-07-03 16:52 YDDMAX 阅读(130) 评论(0) 推荐(0)
摘要:1、Condition是个接口,其实现类是同步器里面的一个内部静态类:ConditionObject。 2、Lock是个接口,该接口里面有个方法是:Condition newCondition(); 3、ReentrantReadWriteLock里面实际上是有两个锁,readLock和writeL 阅读全文
posted @ 2016-07-03 13:14 YDDMAX 阅读(178) 评论(0) 推荐(0)
摘要:1、当中断异常被捕获时,中断标识自动清除 2、中断标识可以当成一个标识位,看成一个volatile变量。经常被用来当做通知线程结束或者唤醒线程的标识。 3、Thread.interrupted()也能自动的清除中断位 线程的中断标识是true,然后调用wait的时候,立刻抛异常。Object的wai 阅读全文
posted @ 2016-07-02 19:41 YDDMAX 阅读(141) 评论(0) 推荐(0)
摘要:一、同步队列 1、线程加入队列因为CAS的使用变成串行的。 1、队列的线程因为中断或者因为出队第二个线程被唤醒。醒来的线程继续tryAcquire判断是否获得锁,如果获得则表示获得锁,否则可能继续wait或者for循环下去。 3、state表示了线程此时的状态 4、condition只能用于互斥的模 阅读全文
posted @ 2016-07-02 15:29 YDDMAX 阅读(112) 评论(0) 推荐(0)
摘要:http://www.cnblogs.com/mickole/articles/3757278.html unsafe类里面是大量的native方法,主要是一些对内存的直接操作等。 unsafe.park is pretty much the same as thread.wait, except  阅读全文
posted @ 2016-07-02 12:17 YDDMAX 阅读(205) 评论(0) 推荐(0)