1.Java使用synchronized对一个方法进行加锁 java class Counter{ int count = 0; public synchronized void add(int n){ count += n; } public synchronized void dec(int n ...
分类:
编程语言 时间:
2019-06-11 09:20:09
阅读次数:
98
线程的状态 初始化—就绪—运行—终止 Sleep : 超时等待,过了一段时间就会进入就绪状态进行竞争cpu资源。 Wait: 等待状态,没有通过notify 或者 notifyAll 唤醒,就会一直进行等待。 Block: block io 或者 遇到加锁的代码时, 接受到数据或者获取到锁就会到运行 ...
分类:
编程语言 时间:
2019-06-08 19:18:02
阅读次数:
134
意向锁 要了解意向锁,必须先讲一下对某一数据对象加锁时系统的检查内容: 1. 先检查该数据对象上有无显式封锁与之冲突。 2. 检查要加到该对象上的锁是否与对象上的隐式封锁(由于上级结点已加的封锁造成的)冲突。 3. 检查该数据对象的所有下级结点,看它们的显式封锁是否与将加到它们上的封锁(隐式封锁)冲 ...
分类:
其他好文 时间:
2019-06-06 20:55:01
阅读次数:
292
概念:管道是由内核管理的一个缓冲区,相当于我们放入内存中的一个纸条。管道的一端连接一个进程的输出。这个进程会向管道中放入信息。管道的另一端连接一个进程的输入,这个进程取出被放入管道的信息。 优点:不需要加锁,基于字节流不需要定义数据结构 缺点:速度慢,容量有限,只能用于父子进程之间,使用场景狭窄 基 ...
分类:
系统相关 时间:
2019-06-06 19:04:05
阅读次数:
122
在高并发的条件下许多地方都要用到分布式加锁, 传统的单体架构加锁synchronized, 以及无法满足多节点集群的模式了, 所以目前比较主流的应该用到第三方中间件来实现分布式加锁. Redis的setNX加锁 命令格式 将 key 的值设为 value,当且仅当 key 不存在。 若给定的 key ...
分类:
其他好文 时间:
2019-06-06 12:01:26
阅读次数:
117
复习1.JoinableQueue--可以被join的队列2.多线程3线程的使用方法与进程一模一样3.1守护线程3.2线程安全问题3.3解决方案3.3.1互斥锁mutex3.3.2递归锁Rlock3.3.3信号量semaphore3.3.4死锁问题详解:1.JoinableQueue--可以被joi ...
分类:
编程语言 时间:
2019-06-05 23:55:00
阅读次数:
256
1.synchronized关键字:它通过在对象上加锁后进入临界区来达到临界区串行访问的目的,而对象本身的作用域将决定锁的粒度。普通方法前加synchronized即给当前类所在的对象加上了锁标记。给静态方法前加上synchronized即就是锁住了当前类的Class对象。 2.悲观锁:必须进行锁操 ...
分类:
其他好文 时间:
2019-06-04 16:18:05
阅读次数:
143
CopyOnWriteArrayList主要可以解决的问题是并发遍历读取无锁(通过Iterator) 对比CopyOnWriteArrayList和ArrayList 假如我们频繁的读取一个可能会变化的清单(数组),你会怎么做? 一个全局的ArrayList(数组),修改时加锁,读取时加锁 读取时为 ...
分类:
其他好文 时间:
2019-05-27 16:26:03
阅读次数:
101
(1) 你的团队的源代码控制在哪里?用的是什么系统? 答:我们的源代码控制在Github上,使用与之相匹配的Git系统。 (2) 一个代码文件被签出之后,另一个人可以签出这个文件,并修改么? a) 有几种设计,各有什么优缺点? 答:有两种设计:①签出文件后,此文件就加锁,别人无法签出。②所有人都可以 ...
分类:
其他好文 时间:
2019-05-26 23:38:39
阅读次数:
176
怎么避免mysql死锁1、以固定的顺序访问表和行。比如两个更新数据的事务,事务A更新数据的顺序为1,2;事务B更新数据的顺序为2,1;。这样更可能会造成死锁。2、大事务拆小。大事务更倾向于死锁,如果业务允许,将大事务拆小。3.在同一个事务中,尽可能做到一次锁定所需要的所有资源,减少死锁概率。4、降低隔离级别。如果业务允许,将隔离级别调低也是比较好的选择,比如将隔离级别从RR调整为RC,可以避免很多
分类:
数据库 时间:
2019-05-25 21:32:00
阅读次数:
147