with(nolock)并意味着没有锁,实际上在查询一张表时,还是有锁,会对对象增加架构锁, 防止表会修改,会对数据库增加共享锁。若使用drop index,则要等到架构锁释放。 sql server2005提供了快照隔离和读取已提交快照这两种新的不加锁、无阻塞的事务隔离级别,可使用 快照:每次从数 ...
分类:
其他好文 时间:
2018-04-10 10:46:34
阅读次数:
212
摘要 从使用场景的角度出发来介绍对ReentrantLock的使用,相对来说容易理解一些。 场景1:如果已加锁,则不再重复加锁 a、忽略重复加锁。b、用在界面交互时点击执行较长时间请求操作时,防止多次点击导致后台重复执行(忽略重复触发)。 以上两种情况多用于进行非重要任务防止重复执行,(如:清除无用 ...
分类:
其他好文 时间:
2018-04-09 13:13:36
阅读次数:
163
python线程中的全局解释器锁GIL(Global Interpreter Lock) python-->支持多线程-->同步和互斥-->加锁-->解释器加锁-->解释器同一时刻只能解释一个线程 在Cpython解释器中,同一个进程下开启的多线程,同一时刻只能有一个线程执行,无法利用多核优势 GI ...
分类:
编程语言 时间:
2018-04-09 00:12:22
阅读次数:
186
我们知道通过FutureTask的get方法可以拿到Callable的返回值,起初猜想get方法应该是不断循环,判断Callable是否达到运行完成状态(会有标记位),如果未完成则wait,这个判断过程是需要加锁完成的,但查看其源码发现并没有锁机制,而是简单了wait,这样的话,难道不会出现Call ...
分类:
其他好文 时间:
2018-04-08 18:10:26
阅读次数:
199
线程安全: 线程安全是多线程访问时,采用加锁的机制,当一个线程访问该类的某个数据时进行保护,其他线程不能访问,直到该线程读取完成,其他线程才可以使用。不会出现数据不一致和数据污染。线程 不安全就是不提供数据保护,可能出现多个线程先后更改数据造成所得数据是脏数据。 C# 实现线程安全的两种方式 1.使 ...
分类:
编程语言 时间:
2018-04-07 17:47:11
阅读次数:
152
基础与控制原语 读写锁 与互斥量类似,但读写锁允许更高的并行性。其特性为:写独占,读共享。 读写锁状态: 一把读写锁具备三种状态: 1. 读模式下加锁状态 (读锁) 2. 写模式下加锁状态 (写锁) 3. 不加锁状态 读写锁特性: 读写锁是"写模式加锁"时, 解锁前,所有对该锁加锁的线程都会被阻塞。... ...
分类:
编程语言 时间:
2018-04-05 20:05:25
阅读次数:
210
一、什么是线程 线程是进程内的执行单元。 二、线程的基本操作 2.1 状态与操作 2.2 新建线程 2.3 终止线程 2.4 中断线程 代码 sleep代码 2.5 挂起和继续执行线程 suspend()不会释放锁 如果加锁发生在resume()之前,则发生死锁 这两个就法不推荐使用 模拟死锁: 分 ...
分类:
编程语言 时间:
2018-04-05 11:41:16
阅读次数:
272
Java并发编程艺术 并发机制的底层原理实现 1.Volatile 定义: Java编程语言允许线程访问共享变量,为了确保共享变量能被准确和一致的更新,线程应该确保通过排他锁单独获得这个变量。 volatile借助Java内存模型保证所有线程能够看到最新的值。(内存可见性) 实现原理: 将带有vol ...
分类:
其他好文 时间:
2018-04-01 14:35:38
阅读次数:
184
一,锁原理的前生今世 synchronized的出现 众所周知,JAVA中最简单的加锁方法是用关键字synchronized,我们可以使用这个关键字将一个方法变成线程安全的,也可以将一个代码块变成线程安全的,这样子我们不需要再担心多线程同时执行到这段代码会引发的并发问题。同时配合方法wait,not ...
分类:
其他好文 时间:
2018-03-31 00:36:04
阅读次数:
173
synchronized 原理分析 1. synchronized 介绍 在并发程序中,这个关键字可能是出现频率最高的一个字段,他可以避免多线程中的安全问题,对代码进行同步。同步的方式其实就是隐式的加锁,加锁过程是有 jvm 帮我们完成的,再生成的字节码中会有体现,如果反编 ...
分类:
其他好文 时间:
2018-03-30 21:38:08
阅读次数:
155