Java多线程与锁模型-顺序锁与资源锁

news/2024/5/20 14:06:39 标签: Java锁, 死锁, 活锁

顺序锁:当应用程序使用2把以上的锁时,就容易出现因为多线程获取锁的顺序不同而死锁的情形,包括交叉获取应用程序范围内的多把已知锁、交叉获取应用程序与第三方方法中的多把锁而造成的顺序死锁。绝大多数死锁都是因为CPU调度多线程时,在执行时序上是交叉进行的而造成乱序获得多把锁,从而形成死锁,所以,解决顺序锁的办法就是总是按照一定的顺序来获取锁!

资源锁:最典型的资源锁是CPU时钟,多线程的程序如果是计算密集型的,那么只要获得锁的线程进行长时间的计算,就会导致其他线程一直处于等待,也就是线程饥饿,这种问题,除了增加计算资源,别无他法,属于顶层结构限制。

活锁死锁是线程因为长时间获取不到锁而进入僵死的状态,而活锁是因为多线程总是同时获取几把锁中的一把,在一定时间内等不到其他锁,就释放了已经获得的锁,等待一段时间后,再次获取锁,再次等待一定时间无法获得其他锁,又释放了已经获得的锁,周而复始,导致所有线程虽然没有僵死,但都不能正常工作,最典型的例子是哲学家进餐问题,解决活锁的方法是等待一个随机的时间间隔后再次尝试获得锁。


http://www.niftyadmin.cn/n/1055536.html

相关文章

【题解】 UVa11729 Commando War

题目大意 你有n个部下,每个部下需要完成一项任务。第i个部下需要你花Bj分钟交代任务,然后他就会立刻独立地、无间断地执行Ji分钟后完成任务。你需要选择交代任务的顺序,使得所有任务尽早执行完毕(即最后一个执行完的任务应尽早结束…

SecureCRT配置文件保存和导入

每次重装系统,都要重新配置SecureCRT,为了减少重复工作。直接在SecureCRT软件中找到:选项---全局选项---常规---配置文件夹下面路径:C:\Users\Administrator\AppData\Roaming\VanDyke\Config 下面文件备份保存一份,下次…

到外国的网站写英语留言

最近flash sandy官方博客以为被黑了,今天去上了 原来是服务器出了点问题。现在修复了,哈哈,留了一个英语给他们,不过他们应该还是很难看,中国式的语言,但是总的来讲,flashsandy 还是算一个不错的…

Java实现文件上传和下载

转:http://www.cnblogs.com/xdp-gacl/p/4200090.html 在Web应用系统开发中,文件上传和下载功能是非常常用的功能,今天来讲一下JavaWeb中的文件上传和下载功能的实现。 对于文件上传,浏览器在上传的过程中是将文件以流的形式提交到…

yii Nav:widget 配置参数encodeLabels

echo Nav::widget([ options > [class > navbar-nav navbar-right], encodeLabels > false,//配置项encodeLabels为false 即参数items 不过滤html items > $menuItems,]);转载于:https://www.cnblogs.com/jasonxiaoqinde/p/7500227.html

Hibernate之Criteria 基本查询

转自http://www.blogjava.net/yzzh9/archive/2008/10/08/233236.html 要对资料库管理系统进行操作,最基本的就是使用SQL(Structured Query Language)语句,大部份的资料库都支援标准的SQL语句,然而也有一些特定于资料库…

es6笔记 day3---对象简介语法以及对象新增

以前的老写法↓ 新写法来了↓ 提示:千万不要手贱,在里面去用箭头函数!!! -------------------------------------------------------------------------------------------------- Object.is() 用来比较两个值是否相等…

六种白领最容易下岗!

没有一技之长的“幼婴型” 在科学与技术日益专门化的今天,一个人要想成为“全才”,除非是具有非常的天赋和过人的勤奋,否则,是难以做到的。 因此,既非“能才”又无一技之长者往往成为被首先考虑下岗的人选。 缺乏团队精…