java
yxz1025
如果生活无法获得平静,生命将失去意义
展开
-
深入理解java中HashMap的使用
当你自己创建用作hashMap的键的类,用可能会忘记其中需要覆盖的一些必须方法,而这种会是一个致命的错误 例如,有两个对象,将Person对象与Dog对象联系起来,这看起来很简单,使用Person作为键,Dog作为值:public class Person{ protected int number; public Person(int i){ number = i;} p原创 2016-08-31 11:35:20 · 527 阅读 · 0 评论 -
Java线程池的实现原理
Java中的线程池的使用场景有很多种,大多数并发框架及并发场景都使用了线程池来管理线程,使用线程池带来的好处主要有以下几点。 第一:提升系统资源利用。重复的创建线程对于系统开销很大,通过重复利用已经创建的线程提高系统的性能 第二:提高系统响应时间。当一个任务被提交不需要等待去创建线程,从而提升响应时间 第三:方便管理线程。通过合理的配置线程池,来优化及使用线程 Java线程池的实现原理是怎...原创 2019-05-14 19:48:26 · 177 阅读 · 0 评论 -
阻塞队列之ArrayBlockingQueue源码分析
顾名思义ArrayBlockingQueue是基于数组的有界队列,采用FIFO的方式进出队列,典型的应用场景比如生产者消费者场景,一个线程从队列拿数据,另外一个线程从队列放数据,当队列为空时,阻塞消费者。是一个线程安全的类,下面看看类的几个属性字段: /** 队列的总长度,一旦指定不可修改 */ final Object[] items; /** 当前数组队列中下一个...原创 2019-05-06 20:16:34 · 165 阅读 · 0 评论 -
JDK源码之ReentrantLock源码分析
ReentrantLock类似于synchronized是一种独占式锁(悲观锁),是基于AQS实现的轻量级锁,相比于synchronized优点在于: 可自由选择锁的获取方式:公平锁和非公平锁 支持可重入锁,即一个线程可以多次获取锁 支持设置获取锁的持有时间 通过构造方法可以看到提供两种模式,默认为非公平锁 //非公平锁 public ReentrantLock() { ...原创 2019-04-24 20:17:21 · 259 阅读 · 0 评论 -
同步队列器AQS之condition等待队列的实现分析
我们知道每个Java对象都对应有一个监视器,此监视器用来实现线程的唤醒、通知等操作,对应Lock来说基于jdk也实现了类似的唤醒及通知的接口Condition接口,这里说明一下上一章节中同步队列器AQS的实现原理使用大量篇幅讲解了同步队列器的原理,而Condition是等待队列,下面通过BoundedBuffer(有界缓存)来分析一下使用场景 /** *此类创建了两个conditi...原创 2019-04-24 16:27:04 · 847 阅读 · 0 评论 -
一张图理解Java锁的原理
原创 2019-04-15 15:57:15 · 246 阅读 · 0 评论 -
同步队列器AQS的实现原理
Java中的锁一般分为两种,一种是synchronized关键字,它是基于底层CPU指令实现的锁,另外一种是Lock锁,是基于jdk实现的一种锁,传统的synchronized是一个重量级锁,缺点是有多个线程获取锁时,获取失败的线程会进入阻塞状态,成功获取锁的线程在处理完逻辑后会通知阻塞态的线程,这时候是随机挑选的属于非公平锁,而lock锁,比如ReentrantLock在默认情况下唤...原创 2019-04-18 20:21:16 · 755 阅读 · 0 评论 -
一张图理解JVM虚拟机结构
原创 2019-04-02 11:28:01 · 206 阅读 · 0 评论 -
任务调度管理器Quartz漫谈
quartz中主要有Job、JobDetail、Scheduler构成在你需要执行的任务中只要实现Job类,然后在execute中执行具体的任务即可。你定义了一个实现Job接口的类,这个类仅仅表明该job需要完成什么类型的任务.首先,我们可以实现一个定时任务管理类ScheduleManager.java:package com.realtech.model;import org.quartz.Cro原创 2016-08-25 11:17:50 · 468 阅读 · 0 评论 -
深入理解Java虚拟机的内存区域
Java虚拟机将自己所管理的区域划分为若干区域,这些区域分别各自管理及执行自己的逻辑处理,下面这些区域是如何划分的: 1、程序计数器 程序计数器在虚拟机内存中占比较小的一块区域,主要负责线程状态的记录,跳出循环、中断等字节码指令,在多核处理器下,由于这块区域是属于线程私有的,所以相对线程安全,由于CPU的处理将线程划分为多个时间片,每一时刻一个CPU只能处理一个线程,这时...原创 2019-05-17 11:23:00 · 262 阅读 · 0 评论