文档章节

JUC——JUC开发简介(一)

o
 osc_x4h57ch8
发布于 2018/04/24 13:39
字数 954
阅读 10
收藏 0

精选30+云产品,助力企业轻松上云!>>>

前言

JUC是Java5.0开始提供的一组专门实现多线程并发处理的开发框架,利用JUC开发架构可以有效的解决实际线程项目开发之中出现的死锁、阻塞、资源访问与公平机制。

此笔记主要记录java.util.concurrent开发包之中的各个核心组成类的使用、操作原理分析,并且通过具体的实际代码对多线程的开发实际环境进行原理分析,同时方便自己随时复习掌握。

此系列学习笔记来源于课程MLDN《JUC线程框架深度讲解》,有兴趣的小伙伴们可以购买学习!

 

JUC开发包简介

多线程是Java开发的主要特色,也是所有的编程开发之中最为麻烦的部分,对于多线程不妨做出如下几个简单思考:

  • 多线程开发在实际的工作之中一定会存在,并且会使用,简单一点理解(只是简单理解),每一个用户就表示一个线程;
  • 如果现在没有所谓的多线程访问同一资源,例如:数据库连接,一些公共的数据操作类,那么可能永远不会感受到所谓的同步与异步的区别,就好比如果是正常的开发过程之中使用ArrayList,Vector对于单线程没有任何影响;
  • 多线程之中会提供同步的处理操作:synchronized,wait(),notify(),notifyAll(),但是难度太大了;
  • 多线程访问的时候一定要进行各种数据类型的操作,那么为了保证数据操作的完成性需要大量使用volatile关键字。

在正常情况下所使用的多线程模型实际上经历了如下几个步骤:

  • 传统开发形式Thread,Runnable为主,但是这个模型有缺陷(无法返回数据、同步处理复杂);
  • 在JDK1.5之后提供有一个新的多线程实现方式就使用Future和Callable的模型,可以实现数据的异步返回处理;
  • 在JDK1.5之后的众多版本里面为了不断地解决开发多线程的困难,又提供了java.util.concurrent开发包。

java.util.concurrent开发包

  • 传统线程编程模式之中为了防止死锁等现象的出现,往往会考虑性能、公平性、资源管理等问题,这样就加重了开发的负担;
  • 利用Java5.0添加的java.util.concurrent开发包JUC进行多线程编程将会有效的减少竞争条件(race conditions)和死锁线程。

java.util.concurrent核心类

(1)Executor

public interface Exector
//具体Runnable任务的执行者

 

(2)ExecutorService

public interface ExecutorService extends Executor
//一个线程池管理者,能把Runnable,Callable提交到池中进行调度

 

(3)Semaphore

public class Semaphore implements java.io.Serializable
//一个计数信号量

 

(4)ReentrantLock

public class ReentrantLock implements Lock, java.io.Serializable
//一个可重入的互斥锁定Lock,功能类似synchronized,但要强大很多

 

(5)Future

public interface Future<V>
//是与Runnable,Callable进行交互的接口,比如一个线程执行结束取返回的结果等等,还提供了cancel终止线程

 

(6)BlockingQueue

public interface BlockingQueue<E> extends Queue<E>
 //阻塞队列

 

(7)CompletionService

public interface CompletionService<V>
//ExecutorService的扩展,可以获得线程执行结果

 

(8)CountDownLatch

public class CountDownLatch
//一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等

 

(9)Callable

public interface Callable<V>
//A task that returns a result and may throw an exception.

 

(10)CyclicBarrier

public class CyclicBarrier
//一个同步辅助类,它允许一组线程互相等待,直到达到某个公共屏障点

 

(11)ScheduledExecutorService

public interface ScheduledExecutorService extends ExecutorService
//一个ExecutorService,可安排在给定的延迟后运行或定期执行的命令

 

o
粉丝 0
博文 500
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。

暂无文章

科技人文丨玻璃心:承受阈值与表达

大家好,我是SKODE。 有趣的灵魂,聊科技人文。 本系列博客地址:传送门 本文转载自B站:安慰记传送门 玻璃心是网络用语,意思是: 对负面事件的接受度很低 还有对别人可能给出的负面评价非常...

osc_u9mt0sus
14分钟前
16
0
迅睿CMS 游客不允许上传附件

游客不允许上传附件 迅睿CMS系统:https://www.xunruicms.com/ 本文档原文地址:https://www.xunruicms.com/doc/752.html...

迅睿CMS-PHP开源CMS程序
15分钟前
7
0
代理,注解,接口和实现类的小测验

* retention : 保留* policy : 策略 ps : 简单测试了一下手写代理,jdk动态代理,和cglib动态代理,根据其不同的结果分析其原理 一:测试目的 主要想看一下不同的代理模式对于目标类中方法上注...

岁一
15分钟前
0
0
V-Ray 5 For 3ds Max 正式发布:超越渲染 - 知乎

15个新功能,V-Ray5助你时间更节省,渲染更出色! 作者:ChaosGroup VRay 5 For 3ds Max 已正式发布! 2分钟视频,抢先预览新功能↓ 知乎视频 www.zhihu.com V-Ray 5 for 3ds Max 新增功能 ...

osc_o9u1um45
16分钟前
0
0
毕业的笑容和悲伤永远是校园的回忆

校园的风轻轻的拂过我的脸庞,风儿显得更加凉爽, 开满火红的凤凰树,染遍了校园的每个角落, 晚上那枝头蝉儿的竞相鸣奏,唱满了令人不舍的毕业歌, 它们彷彿告诉了我们要毕业了。 毕业典礼那...

瑾123
16分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部