前言 Java SDK并发包通过 和`Condition synchronized`实现了管程的,那么为什么还在SDK中提供另外一种实现呢?欲知为何请看下文。 下面将先阐述再造管程的理由,然后详细介绍Lock和Condition,最后再看实现同步机制时是选择synchronized还是SDK中的管程 ...
分类:
编程语言 时间:
2020-02-09 20:44:27
阅读次数:
68
解决方式1: 并发协作模型"生产者/消费者模式" >管程法 生产者:负责生产数据的模块(可能是方法,对象,线程,进程) 消费者:负责处理数据的模块(可能是方法,对象,线程,进程) 缓冲区:消费者不能直接使用生产者的数据,他们之间有个缓冲区,生产者将生产好的数据放入缓冲区,消费者从缓冲区拿出数据 思路 ...
分类:
编程语言 时间:
2020-02-04 20:15:16
阅读次数:
94
前言 在Java 1.5之前,Java语言提供的唯一并发语言就是管程,Java 1.5之后提供的SDK并发包也是以管程为基础的。除了Java之外,C/C++、C 等高级语言也都是支持管程的。 那么什么是管程呢? 见名知意,是指管理共享变量以及对共享变量操作的过程,让它们支持并发。翻译成Java领域的 ...
分类:
编程语言 时间:
2020-01-28 21:07:16
阅读次数:
93
看过一句话“为什么这么多的人宁愿干体力活,也不愿意学习去挣钱呢?” 因为“学习是主动吃苦,而生活的苦是自动找到懒人的” 我曾从事过Linux运维技术行业,在2016年分别获得红帽系统管理员RHCSA证书与RHCE7红帽工程师的认证证书,尽管如此互联网技术的发展,深知水平有限,作为一名普通的技术人员, ...
分类:
其他好文 时间:
2019-12-20 16:50:20
阅读次数:
127
在学习Java内存模型之前,先了解一下线程通信机制。 1、线程通信机制 在并发编程中,线程之间相互交换信息就是线程通信。目前有两种机制:内存共享与消息传递。 1.1、共享内存 Java采用的就是共享内存,本次学习的主要内容就是这个内存模型。 内存共享方式必须通过锁或者CAS技术来获取或者修改共享的变 ...
分类:
编程语言 时间:
2019-12-11 00:39:01
阅读次数:
95
在接触并发之前,我只听说过进程、线程,管程这个词倒是头回听说,抱着认真好学的态度,去找了找关于 管程 的资料,不学不知道,原来并发里的两大难题--互斥和同步都可以用管程来解决,可以说,管程是一把解决并发的万能钥匙。 那什么是管程呢?原来管程并不像进程、线程这样来形容一个特指东西的名词,管程是指管理共 ...
分类:
其他好文 时间:
2019-11-17 14:28:35
阅读次数:
81
利用“生产者/消费者模式”去解决线程间的通信问题,这里整理“管程法”与“信号灯法”两种实现方式。 “管程法” 代码示例: “信号灯法” 代码示例: 线程池 JDK5.0起提供了线程池相关API:ExecutorService和Executors ExecutorService:真正的线程池接口。常见 ...
分类:
编程语言 时间:
2019-11-10 13:19:55
阅读次数:
71
管程和信号量这两个同步原语在 Java 语言中的实现,理论上用这两个同步原语中任何一个都可以解决所有的并发问题。那 Java SDK 并发包里为什么还有很多其他的工具类呢?原因很简单:分场景优化性能,提升易用性。 其中有个非常普遍的并发场景:读多写少场景。实际工作中,为了优化性能,我们经常会使用缓存 ...
分类:
其他好文 时间:
2019-10-25 13:42:22
阅读次数:
119
什么叫异常? 导致程序异常退出叫做异常 # 异常处理的格式:try: CMD #要处理的程序except: RESULT #发现异常时你要如何处理 #如果要抓取某种特定异常可以用except ERROR as e #else:如果程序正常执行那么会执行else里面的代码 #finally 的作用:不 ...
分类:
编程语言 时间:
2019-10-25 09:30:53
阅读次数:
87
monitor概念 管程,监视器。在操作系统中,存在着semaphore和mutex,即信号量和互斥量,使用基本的mutex进行开发时,需要小心的使用mutex的down和up操作,否则容易引发死锁问题。为了更好的编写并发程序,在mutex和semaphore基础上,提出了更高层次的同步原语,实际上 ...
分类:
编程语言 时间:
2019-09-29 10:06:56
阅读次数:
178