最近在看concurrent包的知识,看到LinkedBlockingQueue,发现一篇好文推荐给大家.原文地址:[细谈Java并发]谈谈LinkedBlockingQueue 1.简介 上篇我们介绍了ArrayBlockingQueue的相关方法的原理,这一篇我们来学习一下ArrayBlockingQueue的“亲戚” LinkedBlockingQueue.在集合框架里,想必大家都用过ArrayList和LinkedList,也经常在面试中问到他们之间的区别.ArrayList和Array…
LockSupport 用法简介 LockSupport 和 CAS 是Java并发包中很多并发工具控制机制的基础,它们底层其实都是依赖Unsafe实现. LockSupport是用来创建锁和其他同步类的基本线程阻塞原语.LockSupport 提供park()和unpark()方法实现阻塞线程和解除线程阻塞,LockSupport和每个使用它的线程都与一个许可(permit)关联.permit相当于1,0的开关,默认是0,调用一次unpark就加1变成1,调用一次park会消费permit,…
重载:相同函数名,不同参数. 重写(覆写):父类和子类之间的,子类重写了父类的方法. java的多态:重载+覆写 1.      Main方法: 是public的,也是static,也是void的,参数为String[] args. 之所以为static,是因为main方法不需要生成对象实例就可以由Java虚拟机来直接调用. 修改或者没有main函数,编译不会有错误,因为编译把main当做普通的函数来处理,但是运行有错误,因为运行的时候,Java虚拟机需要调用main函数而没有符合要求的这个ma…
1.前言 匿名内部类是什么东西? 没有名字的内部类就是匿名内部类. 什么场景使用? 匿名内部类适合创建那种只需要一次使用的类. 这是个很有用的东西,可想而知,如果不使用匿名内部类,哪些只需要使用一次的类岂不是需要单独做个文件存放?文件多起来,连名字都不好起, 这算是 给 起名字困难人群 巨大的福利啊!!!直接不要名字啦,哈哈哈哈哈 匿名内部类的使用需要接口或抽象类的使用,而使用抽象类又有点像Java多态知识点用法,当然区别还是有的. 2.操作 (1)使用接口实现匿名内部类 创建一个接口 pack…
简介 读写锁维护着一对锁,一个读锁和一个写锁.通过分离读锁和写锁,使得并发性比一般的排他锁有了较大的提升:在同一时间可以允许多个读线程同时访问,但是在写线程访问时,所有读线程和写线程都会被阻塞. 读写锁的主要特性: 公平性:支持公平性和非公平性. 重入性:支持重入.读写锁最多支持65535个递归写入锁和65535个递归读取锁. 锁降级:遵循获取写锁.获取读锁在释放写锁的次序,写锁能够降级成为读锁 读写锁ReentrantReadWriteLock实现接口ReadWriteLock,该接口维护了一…
LockSupport 和 CAS 是Java并发包中很多并发工具控制机制的基础,它们底层其实都是依赖Unsafe实现.LockSupport是用来创建锁和其他同步类的基本线程阻塞原语. 1.LockSupport原理 LockSupport是只有静态方法且构造函数私有,对外给线程提供各种版本的park()和unpark()方法实现阻塞线程和解除线程阻塞. LockSupport和每个使用它的线程都与一个许可(permit)关联.permit类似信号量,相当于1,0的开关,默认是0,调用一次un…
什么是AQS aqs全称为AbstractQueuedSynchronizer,它提供了一个FIFO队列,可以看成是一个用来实现同步锁以及其他涉及到同步功能的核心组件,常见的有:ReentrantLock.CountDownLatch等. AQS是一个抽象类,主要是通过继承的方式来使用,它本身没有实现任何的同步接口,仅仅是定义了同步状态的获取以及释放的方法来提供自定义的同步组件. 可以这么说,只要搞懂了AQS,那么J.U.C中绝大部分的api都能轻松掌握. AQS的两种功能 从使用层面来说,AQ…
阻塞队列 常见的阻塞队列有ArrayBlockingQueue,LinkedBlockingDeque,LinkedBlockingQueue,这些队列有界且可以阻塞线程 ArrayBlockingQueue ArrayBlockingQueue是有界的阻塞队列,LinkedBlockingDeque通过数组.非空和非满Condition.RantrantLock实现了线程安全.空的时候take阻塞,满的时候put阻塞 java并发初探LinkedBlockingQueue LinkedBloc…
本文介绍LinkedBlockingQueue,这个队列在线程池中常用到.(请结合源码,看本文) 1. 介绍 LinkedBlockingQueue, 不支持null,基于单向链表的可选有界阻塞队列.队列的顺序是FIFO.基于链表的队列通常比基于数组的队列有更高的吞吐量, 但在大多数的并发应用中具有更低的可预测性能较差(这句话,在最后解释一下) 如果不选择队列的容量,默认值是Integer.MAX_VALUE,为了防止队列的过度扩张. 还实现了Collection接口与Iterator接口中所有…
在上篇博客中,我们介绍了<hibernate基本概念和体系结构>,也对hibernate框架有了一个初步的了解,本文我将向大家简单介绍Hibernate的核心API调用库,并讲解一下它的基本配置.核心API的底层实现和源码解析将在以后的博客中一一为大家讲解. 首先我们一起来看一下开发一个hibernate应用程序的大体流程是什么样的(流程顺序可以颠倒): •创建Hibernate的配置文件 •创建持久化类 •创建对象-关系映射文件 •通过Hibernate API编写访问数据库的代码 关于配置…