前两天看极客时间Java并发课程的时候,刷到一个概念:活锁。死锁,倒是不陌生,活锁却是第一次听到。在介绍活锁之前,我们先来复习一下死锁。下面的例子模拟一个转账业务,多线程环境,为了账户金额安全,对账户进行了加锁。1publicclassAccount{2publicAccount(intbalance,Stringcard){3this.balance=balance;4this.card=car
分类:
其他好文 时间:
2020-08-06 09:23:01
阅读次数:
52
目的 建立一个ftp服务器 禁止匿名登录 允许team1账号对/var/ftp/data进行管理和操作 而其他所有账号(team2,team3)只能对/var/ftp/data/data1进行管理和操作,意思是这些账号的根目录锁死在data1目录下 安装 安装vsftpd yum -y instal ...
分类:
其他好文 时间:
2020-07-31 12:32:28
阅读次数:
75
避免死锁 在有些情况下死锁是可以避免的。本文将展示三种用于避免死锁的技术: 加锁顺序 加锁时限 死锁检测 加锁顺序 当多个线程需要相同的一些锁,但是按照不同的顺序加锁,死锁就很容易发生。 如果能确保所有的线程都是按照相同的顺序获得锁,那么死锁就不会发生。看下面这个例子: Thread 1: lock ...
分类:
其他好文 时间:
2020-07-29 21:24:07
阅读次数:
74
目录结构: (1)锁机制概述 什么是锁,以及为什么使用锁和锁的运作? 锁定机制分类? 按封锁类型分类 按封锁的数据粒度分类 行级锁定 表级锁定 页级锁定 数据库事务机制。 什么叫事务?简称ACID。 事务引起的并发调度问题 理论上的事务的三级封锁协议 事务隔离级别 活锁与死锁的探究 活锁 死锁 (2 ...
分类:
数据库 时间:
2020-07-22 15:35:55
阅读次数:
69
线程死锁 1.死锁 多个线程因竞争资源而造成的一种僵局(互相等待),无外力作用下程序无法推进的情况称之为死锁 如下图:线程P1拥有锁R1,请求锁R2,而线程P2拥有锁R2请求锁R1,彼此都请求不到资源,结束不了方法无法释放对方需要的资源,因此相互等待无法推进,这就是死锁 2.产生的四个必要条件 1. ...
分类:
编程语言 时间:
2020-07-09 22:07:27
阅读次数:
72
1 各种锁的释义 1.1 死锁 死锁是指两个线程同时占用两个资源,又在彼此等待对方释放锁资源 import java.util.concurrent.TimeUnit; public class LockExample { public static void main(String[] args) ...
分类:
编程语言 时间:
2020-07-03 01:15:13
阅读次数:
83
一、基本概念 1、互斥量(mutex) 互斥量:是个类对象(可以理解为一把锁),多个线程尝试用lock()成员函数来加锁这把锁,只有一个线程能锁定成功(成功的标志是lock()函数能够返回,返回不了说明没有锁成功) 2、死锁 死锁:一般是两个或两个以上的互斥量,在两个或多个地方上锁的顺序不一致导致的 ...
分类:
编程语言 时间:
2020-06-25 17:29:08
阅读次数:
69
1、概览 当多线程帮助我们提高应用性能的同时,它同时也带来一些问题,本文我们将借助几个小例子看下两个问题,死锁和活锁。 2、死锁 2.1、什么是死锁 死锁发生在当两个或多个线程一直在等待另一个线程持有的锁或资源的时候。这会导致一个程序可能会被拖垮或者直接挂掉,因为线程们都不能继续工作了。 经典的哲学 ...
分类:
编程语言 时间:
2020-06-24 00:24:55
阅读次数:
92
生产环境MySQL死锁如何监控及如何减少死锁发生的概率。 首先,死锁并不是"锁死",死锁是由于两个或两个以上会话锁等待产生回路造成。 一、死锁监控及处理方法 对于死锁的监控,各个版本都提供了innodb_print_all_deadlocks选项,打开该选项即会将死锁的日志输出到MySQL的错误日志 ...
分类:
数据库 时间:
2020-06-17 10:57:04
阅读次数:
90