01 2019 档案
摘要:困扰 Intellij idea是一款非常强大的编辑器,可以很方便地帮我们创建maven项目,有用过的同学应该都深有体会,但我们经常会遇到一个困扰,那就是用idea创建maven项目时,速度很慢,往往需要好几分钟的时间,有时甚至会卡住,主要原因是创建maven项目时默认是下载求网络上的一个文件arc
阅读全文
摘要:[toc] 前言 前阵子突发奇想,想学习下SpringMVC的源码,于是打算用idea搭建一个简易的maven版SSM案例,也就是SpringMVC+Spring+MyBatis+Maven,因为之前创建过一些Spring的小demo,相关的软件环境已经搭建完成,本以为搭建一个入门级的SSM项目应该
阅读全文
摘要:无锁的思想 众所周知,Java中对并发控制的最常见方法就是锁,锁能保证同一时刻只能有一个线程访问临界区的资源,从而实现线程安全。然而,锁虽然有效,但采用的是一种悲观的策略。它假设每一次对临界区资源的访问都会发生冲突,当有一个线程访问资源,其他线程就必须等待,所以锁是会阻塞线程执行的。 当然,凡事都有
阅读全文
摘要:[toc] 引言 通过前面的文章,我们学习了Executor框架中的核心类ThreadPoolExecutor ,对于线程池的核心调度机制有了一定的了解,并且成功使用ThreadPoolExecutor 创建了线程池。 而在Java中,除了ThreadPoolExecutor ,Executor框架
阅读全文
摘要:[toc] 引出线程池 线程是并发编程的基础,前面的文章里,我们的实例基本都是基于线程开发作为实例,并且都是使用的时候就创建一个线程。这种方式比较简单,但是存在一个问题,那就是线程的数量问题。 假设有一个系统比较复杂,需要的线程数很多,如果都是采用这种方式来创建线程的话,那么就会极大的消耗系统资源。
阅读全文
摘要:前言 前面的文章里,我们学习了有关锁的使用,锁的机制是保证同一时刻只能有一个线程访问临界区的资源,也就是通过控制资源的手段来保证线程安全,这固然是一种有效的手段,但程序的运行效率也因此大大降低。那么,有没有更好的方式呢?答案是有的,既然锁是严格控制资源的方式来保证线程安全,那我们可以反其道而行之,增
阅读全文
摘要:[toc] 前言 多线程开发中,同步控制是必不可少的手段。而同步的实现需要用到锁,Java中提供了两种基本的锁,分别是synchronized 和 Lock。两种锁都非常常用,但也各有利弊,下面开始学习。 synchronized用法 synchronized 是Java的关键字,是应用最为广泛的同
阅读全文