核心点:1、锁对象必须是同一个。2、wait()和notify()方法必须是调用锁对象的方法,而非this(线程)的。3、在多生产多消费的时候注意使用notifyAll而不是notifyAll,否则会造成死锁测试代码: 1 import java.util.LinkedList; 2 impor.....
分类:
编程语言 时间:
2015-08-28 00:41:35
阅读次数:
243
1:锁(Lock) 1.1 java提供了一个锁的接口,这个锁同样可以达到同步代码块的功能,API文档上说使用锁比使用synchronized更加灵活。 1.2 如何使用这个“锁” //1.创建一个所对象,我们可以理解为写一个synchronized代码块 public static...
分类:
编程语言 时间:
2015-08-19 00:20:50
阅读次数:
169
在上一篇博客中,我们讨论了Race Condition现象以及它产生的原因,现在我们知道它是不好的一种现象了,那么我们有什么方法避免它呢。最直接有效的方式就是放弃多线程,直接改为使用单线程但操作数据,但是这是不优雅的,因为我们知道有时候,多线程有它自己的优势。在这里我们讨论两种其他的方法——锁对象和条件对象。
锁对象
java SE5.0之后为实现多线程的互斥引入了ReentrantLock类...
分类:
编程语言 时间:
2015-08-17 08:48:20
阅读次数:
400
概要接上一篇文章,练习修改锁的公平性,和在所中使用条件。修改锁的公平性ReentrantLock /**
*构造一个锁对象,默认为非公平锁
*/
public ReentrantLock(boolean fair) {
sync = fair ? new FairSync() : new NonfairSync();
}根据Reentrant...
分类:
编程语言 时间:
2015-08-11 23:26:52
阅读次数:
243
package cn.itcast_11;/** A:同步代码块的锁对象是谁呢?* 任意对象。* * B:同步方法的格式及锁对象问题?* 把同步关键字加在方法上。* * 同步方法的锁是谁呢?* this(一个类本身对象就是this)* * C:静态方法及锁对象问题?* 静态方法...
分类:
其他好文 时间:
2015-07-10 11:15:13
阅读次数:
109
1、使用thread模块(不推荐)
常用函数:
‘start_new_thread(function,args,kwargs=None)’:创建一个新的线程,并运行’function(args)’
‘allocate_lock()’: 创建锁对象 Lock object
‘exit()’: 提示线程退出
Lock的函数:
‘acquire(wait=None)’: 获取lock对象或等待...
分类:
编程语言 时间:
2015-06-23 13:37:53
阅读次数:
135
oracle中对于访问频率很高的包,存储过程或者函数,会引起死锁。对于用到了死锁的对象的脚本都会无法运行,造成卡死,或者报异常:打开的连接太多。这时需要使用dba权限账户去kill掉死锁的对象。使用 alter system kill session 死锁对象的ID;执行如下sql,查找出死锁的ID,并将alter语句拼接好:select Distinct 'alter system kill s...
分类:
数据库 时间:
2015-05-30 12:13:55
阅读次数:
160
在多个线程之间共享数据时,需要考虑线程同步问题,必须确保每次只有一个线程访问和改变共享数据。
C#中使用lock语句可以轻松地设置和解除锁定以期达到每次只有一个线程访问和改变共享数据的目的。
下面是一个多线程访问共享数据的实例,看看在没有进行同步操作的情况下会出现什么样的问题?
using System;
using System.Threading;
namespace LockE...
分类:
编程语言 时间:
2015-05-25 18:43:57
阅读次数:
128
@synchronized 锁的永远是对象 ,值针对于对象,只能锁对象,常量等是不能加synchronized,一旦加编译也不会通过@synchronized 锁对象中的非static 就是锁调用该方法的对象,是整个对象@synchronized 锁对象中的static 方法就是锁整个类 ,和 sy...
分类:
其他好文 时间:
2015-05-11 14:40:36
阅读次数:
88
在Java5中,专门提供了锁对象,利用锁可以方便的实现资源的封锁,用来控制对竞争资源并发访问的控制,这些内容主要集中在java.util.concurrent.locks 包下面,里面有三个重要的接口Condition、Lock、ReadWriteLock。Condition:Condition 将...
分类:
编程语言 时间:
2015-05-09 10:04:43
阅读次数:
104