HashMap原理 2020-01-10| HashMap HashMap原理HashMap怎么使用1234567891011121314151617181920212223242526272829import java.util.HashMap;import java.util.Map;public class test { public ...
阅读更多 AQS队列同步器 2020-01-09| 并发编程 - AQS 队列同步器(AbstractQueuedSynchronizer)队列同步器,是一个用来构建锁或者其他同步组件的基础框架,像之前提到的重入锁,读写锁,都是使用这个框架搭建起来的。它使用一个int成员变量表示同步状态,通过内置的FIFO队列来完成资源获取线程的排队工作。
队列同步器接口的方法1prot ...
阅读更多 Java虚拟机(四)垃圾回收的机制和算法 2020-01-05| Java虚拟机 GCJava虚拟机除了支持了Java的跨平台性之外,最重要的就是虚拟机能够自动进行内存的回收,它不像C++那样,需要析构函数之类的去分配和管理内存,同样的也没有指针这个神奇的玩意,在处理不会再被使用的对象时,Java虚拟机会自动帮我们完成内存的回收。而所谓的内存回收,就叫做GC,也可以叫做垃圾收集, ...
阅读更多 Java虚拟机(三)虚拟机中的内存溢出 2020-01-04| Java虚拟机 OutOfMemoryError异常OutOfMemoryError异常(简称OOM)是Java虚拟机中一个比较常见的异常,它的情况有很多种,我们就以HotSpot的虚拟机为例,讲解一下常见的异常。
Java堆溢出Java堆是在虚拟机中,所有线程共享的一个堆栈,我们如果在程序中不断地添加一个对象而不 ...
阅读更多 Java虚拟机(二)HotSpot虚拟机对象探秘 2020-01-04| Java虚拟机 对象的创建在Java中,一个对象的创建,一般是使用new指令去完成。而c++则是直接定义对象就行了,Java虚拟机在对对象的创建和使用中有着自己的分配机制。我们的虚拟机遇到 new 指令时,首先检查这个指令的参数是否能在常量池中定位到一个类的符号引用,并且检查这个符号引用代表的类是否已经被加载、解析 ...
阅读更多 Java虚拟机(一)Java虚拟机概念 2020-01-03| Java虚拟机 Java的起源但是要说清楚Java虚拟机,我想从JDK开始说起。我们想要在一个计算机上使用Java,就必须在网上下载JDK和JRE,JDK是Java的开发工具,JRE是Java的运行环境,有了这个两个就能在计算机上使用Java。有人说可能还需要配置path路径,其实也未必,之所以要配置Java_ho ...
阅读更多 Java并发编程(二十一)AIO 2020-01-02| 并发编程 - 网络 AIO在网络编程的一步一步进化中,NIO取代了旧的IO方式。而如今,NIO这样的通过selector不断去监控channel的方式,已经开始不满足于现如今的优化需要,也因为NIO一直都是一个同步的IO队列,对于高并发情况下,产生的阻塞依然会让人苦恼,于是乎,像AIO这样的异步IO方式,便诞生了。
...
阅读更多 Java并发编程(二十)网络NIO 2020-01-01| 并发编程 - 网络 NIO什么是NIONIO,即new io,一个可以代替Java io的一个新的机制。这个机制极大的区别的传统的io,让程序在多线程上拥有更好的效率。我们先来看看它和传统的io有什么区别。
它在类型上和io不同,nio主要是一个面向缓冲区操作的,我们传统的io,都是使用着stream流的方式去读写信 ...
阅读更多 Java并发编程(十九)并行算法 2019-12-31| 并发编程 - 算法 串行计算在并行的情况在串行条件下,许多计算方法,都比较的贴近自然语言,就好似a=b+c; 这样的计算方法,无疑那么的明显,就是a要等于b和c的和,和我们使用手写写出来的,并没与什么区别。但是,这样的计算方法,在并行条件下,却有那么点不同。或者说,串行计算在并行条件(多线程)下,也只会执行串行计算。举 ...
阅读更多 Java并发编程(十八)Future模式 2019-12-31| 并发编程 - 设计模式 - 线程池 Future模式Future模式是在多线程程序中设计中的一个非常常见的设计模式,它和Runnable非常类似,总整体而言,可以看作为有了返回值的Runnable。但是Future模式是继承Callable接口,重写call()方法的:
12345678import java.util.concurr ...
阅读更多