Java并发编程
李子树_
学--讲--写
展开
-
Java多线程结合银行家算法避免死锁实践
在前几篇文章中,我们讨论了银行家算法,包含其数据结构、算法步骤和安全性算法。关于银行家算法的具体细节,请参看这篇博文。 在另一篇文章中,我们使用了Java来模拟实现了银行家算法,并使用一个例子来验证了算法的有效性,具体实现请参看这篇博文。 本文,让我们一起来看下如何使用Java多线程模拟OS中多个进程的执行,并且采用银行家算法来避免死锁,本文中,我们精心的设计了例题,让整个实验过程更加清晰。原创 2020-02-05 22:49:26 · 4346 阅读 · 10 评论 -
Java并发编程模拟管程(霍尔Hoare管程、汉森Hansan管程、MESA管程)
在前面个两篇博文中,我们使用Java模拟了AND型信号量和信号量集,本文将使用Java来模拟管程,关于管程的一些理论知识,可以参考另一篇博客。 对于管程,在这里我们不做具体的讨论了。不过对于Java和管程之间的一些事,还是很有意思的。Java中,每个对象其实都一个Monitor(java中翻译为监视器),Java中提供的synchronized关键字及wait()、notify()、not...原创 2019-11-21 19:19:16 · 4275 阅读 · 4 评论 -
Java并发编程(JUC)模拟信号量集
上一文中,我们使用JUC模拟了AND型信号量,对于信号量集,他的特点就是一次可以申请多个资源,并且可以设置资源分配下限,让设计者可以更好的来控制进程的执行。如果对于进程同步机制还有什么疑惑,可以参考我的另一篇博客。 为了方便编程,并且信号量集在使用时更加方便,我们定义了一个SemaphoreUnit对象,用这个对象来记录申请的信号量类型,申请的数量和分配下限值,SemaphoreUnit定...原创 2019-11-17 12:22:05 · 1720 阅读 · 2 评论 -
Java并发编程(JUC)模拟AND型信号量
Java并发编程(JUC)模拟AND型信号量 AND型信号量可能大家都听说过并可能都有一定的理解,但是你有使用过么?今天就使用Java来模拟实现! 本文是对上篇文章(进程同步机制)的一次实践,通过JUC提供的一些机制来模拟一些OS中的AND型信号量,因为记录型型信号量可以等价于JUC中提供的Semaphore(信号量),但是对于AND型信号量因为一些原因(主要是过时了),JUC没有提供,今...原创 2019-11-16 09:36:57 · 2631 阅读 · 3 评论