JiHaiXiao Blog

不积跬步无以至千里

JDK1.8中ThreadLocal源码分析

"jdk1.8的实现,了解ThreadLocal的运作方式和原理"

“Yeah It’s on. ” 前言 java中最常用的并发框架就是线程池,如果需要异步或者并发任务都可以使用它,使用它有几个好处: 降低资源消耗。通过重复使用创建的线程降低线程创建和销毁的开销。 提高响应速度。当任务到达时,任务可以不需要等到线程创建就能立即执行。 提高线程的可管理性。线程是稀缺资源,如果无限制创建,会消耗系统资源,降低系统稳定性,使用线程池统...

ThreadPoolExecutor线程池源码分析

"jdk1.8的实现,了解线程池的运作方式和原理"

“Yeah It’s on. ” 前言 java中最常用的并发框架就是线程池,如果需要异步或者并发任务都可以使用它,使用它有几个好处: 降低资源消耗。通过重复使用创建的线程降低线程创建和销毁的开销。 提高响应速度。当任务到达时,任务可以不需要等到线程创建就能立即执行。 提高线程的可管理性。线程是稀缺资源,如果无限制创建,会消耗系统资源,降低系统稳定性,使用线程池统...

fork/join框架

"jdk1.7提供的任务拆分框架"

“Yeah It’s on. ” 前言 JDK1.7后,提供了一个完善的任务并行框架—Fork/Join。 现实中有很多任务,如果单线程执行,效率很低,但是可以对大的任务拆分,拆分开来的小任务互不影响,多个线程并行执行,执行完合并结果,这么明显提高了效率。例如:有一张数据库的表,我们想把数据库这张表的数据抽出来,全量写到redis里,如果每次分页查一页数据,然后单线程写redi...

讲讲线程间的通信

"线程与线程之间互相独立,那么他们是靠什么互相通信的呢"

“Yeah It’s on. ” 前言 线程之间都各自有各自的工作空间,自己的工作副本,如果互相之间不通信,自己搞自己的事,那么价值一般般,如果多个线程能够相互通信,互相配合去完成工作,这就明显提升了效率。 正文 1.volatile和synchronized关键字 这两个java提供的关键字可以用作线程间的通信,先说volatile: java支持多个线程同时访问一个成...

CentOS7管理防火墙和打开端口

"打开关闭防火墙 "

正文 1:安装iptables-service,打开防火墙 刚刚初始化的CentOS系统里面,在/etc/sysconfig目录下面是没有iptables文件的,所以想往里面写入需要先把它初始化出来。 如果你在未初始化之前直接使用这个命令,打开防火墙: service iptables start 就会报错:Failed to restart iptables.service: ...

Java Condition使用与源码分析

"如何使用Condition实现线程之间的等待与唤醒 "

Condition使用简介 1:Condition与Java对象监视器方法的比较 任何一个Java对象都有一组监视器方法(在java.lang.Ojbect上),主要包括wait(),wait(long timeout),notify(),notifyAll()等方法,这几个方法跟synchronized关键字结合,可以实现等待/通知模式。 Condition接口也提供了类似的方法,通...

Java中final关键字的内存语义

"理解final关键字在并发中的用法 "

“Yeah It’s on. ” 前言 final关键字修饰的域是不可变的,即在初始化后不能被程序改变,当然,如果final修饰的是对象的引用,不可变是指该对象的引用不可变,这个对象的内部还是可以被修改的。 正文 1:final域的重排序规则 对于final域,编译器和处理器要遵循如下重排序规则: 在构造函数内对一个final域的写入,与随后把这个被构造对象的引用赋...

ReentrantLock源码解析

"根据ReentrantLock源码理解并发工具类的核心AQS "

前言 这篇笔记都是自己根据JDK源码自己理解的,希望有人能看到,然后跟我探讨下,不一定理解的就好。 正文 ReentrantLock简介 这是jdk1.5 并发大师Doug Lea 增加的一个锁工具,它可以替代synchronized,并且它还具有synchronized不具备的功能,例如可中断锁,定时锁等。 ReetrantLock同时也是可重入的,而且它有两种形态:公平锁和非公...

Spring MVC 4.X 教程(一)

"how to run spring mvc based on annotation "

“Yeah It’s on. ” 前言 现在开发正在趋于精简化,像基于xml配置的框架显得略重,基于注解跟JAVA配置越来越流行了。 Spring MVC 4.X 基于注解和java的配置用起来非常爽快,不需要web.xml和applicationContext.xml,下面我给出第一个简单的小例子。 正文 现在开始搭建第一个demo(这里我们使用jsp作为页面展示): ...

JMM中的happen before

"help to understand concurrency programming "

“Yeah It’s on. ” 前言 JMM(Java Memory Model)对于理解并发编程有很重要的帮助,而happen-before是JMM的核心。 跳过废话,直接看技术实现 JMM在程序猿的需求跟编译器,处理器之间的需求做了一个比较折中的选择。 程序猿想让JMM能够提供一个强一致内存模型,这样编程越方便。 编译器,处理器想...