Condition将Object监视器方法(wait、notify 和 notifyAll)分解成截然不同的对象,以便通过将这些对象与任意Lock实现组合使用,为每个对象提供多个等待 set(wait-set)。其中,Lock 替代了synchronized方法和语句的使用,Condition替代了Object监视器方法的使用。 1. Condition的基本使用    由于Condition可以用来替代wait、notify等方法,所以可以对比着之前写过的线程间通信的代码来看,再来看一下原来那个问题: >有…

2021年1月16日 0条评论 18点热度 阅读全文

本文为博主原创文章,转载请注明出处:http://blog.csdn.net/eson_15/article/details/51145788 前面已经学习完了List部分的源码,主要是ArrayList和LinkedList两部分内容,这一节主要总结下List部分的内容。 List概括         先来回顾一下List在Collection中的的框架图:     从图中我们可以看出:   &…

2021年1月15日 0条评论 37点热度 阅读全文

强烈推荐一个大神的人工智能的教程:http://www.captainbed.net/zhanghan 【前言】        从开源中国的对Java各个版本使用投票可以看出,目前Java8还是以67%的压倒性优势遥遥领先(Java 11 已正式发布,你在使用 Java 的哪个版本?);众所周知,Stream是Java8中的一大亮点,现在分享一下自己在工作中用它解决一个需求。 【业务场景及实现】         一、业务场景:有一个学生…

2021年1月14日 0条评论 23点热度 阅读全文

  学习完接口后,知道了接口中只能定义常量,即使你的代码是这样写的:public int a,底层语言也会默认加上public static final int a转为常量,那么这是为什么呢?   我们都知道,接口中不能定义方法的实现,但是抽象类中是可以定义变量、常量以及方法的实现的,所以我们可以将接口看为比抽象类更高层次的抽象,是特殊的抽象类。加入接口可以定义变量,因为接口中的方法都是抽象的,我们无法通过行为,例如set()方法来修改这一属性值。   或许有些人会说我们可以让实现接口的类的对象去修改接口的属性值,…

2020年9月21日 0条评论 28点热度 阅读全文

强烈推荐一个大神的人工智能的教程:http://www.captainbed.net/zhanghan 【前言】         今天在优化通知平台的路由部分时发现每次当路由初始化到Redis时异常慢,早就听闻Pipeline是redis批量操作的利器,正好这次用Pipeline进行优化; 【整合Redis实战】          一、原理分析            …

2019年5月28日 0条评论 2点热度 阅读全文

强烈推荐一个大神的人工智能的教程:http://www.captainbed.net/zhanghan 【前言】         今天在优化通知平台的路由部分时发现每次当路由初始化到Redis时异常慢,早就听闻Pipeline是redis批量操作的利器,正好这次用Pipeline进行优化; 【整合Redis实战】          一、原理分析            …

2019年5月28日 0条评论 2点热度 阅读全文

  【前言】         最近接到一个新需求,经过分析后做了相应的设计;其中需要在一个项目中操做不同的数据源;于是进行了相关验证;在此记录一下验证过程。 【实战多数据源】          一、Pom中引入相应的Jar包 <!-- mysql 基础服务--> <dependency> <groupId>mysql</groupId> <artifactId&g…

2019年1月13日 0条评论 69点热度 阅读全文

线程锁好比传统线程模型中的synchronized技术,但是比sychronized方式更加面向对象,与生活中的锁类似,锁本身也应该是个对象。两个线程执行的代码片段如果要实现同步互斥的效果,它们必须用同一个锁对象。锁是上在代表要操作的资源的类的内部方法中,而不是线程代码中。这一篇博文主要总结一下线程锁技术中Lock锁、ReadWriteLock锁的使用。 1. Lock的简单使用    有了synchronized的基础,Lock就比较简单了,首先看一个实例: ```java public class LockTe…

2016年6月4日 0条评论 1点热度 阅读全文

我们知道,使用synchronized关键字可以有效的解决线程同步问题,但是如果不恰当的使用synchronized关键字的话也会出问题,即我们所说的死锁。死锁是这样一种情形:多个线程同时被阻塞,它们中的一个或者全部都在等待某个资源被释放。由于线程被无限期地阻塞,因此程序不可能正常终止。   下面写一个死锁的例子加深理解。先看程序,再来分析一下死锁产生的原因: public class DeadLock { public static void main(String[] args) { Business busi…

2016年5月29日 0条评论 1点热度 阅读全文

我们继续分析TreeMap的源码 1.TreeMap源码分析(续) 1. 存取方法         TreeMap中的存取方法本质上就是对红黑树的插入和删除操作,从源码里体现的更为明显,其实就是对红黑树的插入和删除(可以参考:红黑树),下面简单看下源码: /*************************** put和remove **********************************/ //将key-value对添加到…

2016年4月25日 0条评论 1点热度 阅读全文