您的位置: 阜阳资讯网 > 时尚

Java 5.0多线程编程(3)

发布时间:2019-09-13 19:40:05

Lock接口

ReentrantLock是Lock的具体类,Lock提供了以下一些方法:

lock(): 请求锁定,如果锁已被别的线程锁定,调用此方法的线程被阻断进入等待状态。 tryLock():如果锁没被别的线程锁定,进入锁定状态,并返回true。若锁已被锁定,返回false,不进入等待状态。此方法还可带时间参数,如果锁在方法执行时已被锁定,线程将继续等待规定的时间,若还不行才返回false。 unlock():取消锁定,需要注意的是Lock不会自动取消,编程时必须手动解锁。 代码:

//生成一个锁

Lock lock = new ReentrantLock();

public void accessProtectedResource() {

lock.lock(); //取得锁定

try {

//对共享资源进行操作

} finally {

//一定记着把锁取消掉,锁本身是不会自动解锁的

lock.unlock();

}

}

ReadWriteLock接口

为了提高效率有些共享资源允许同时进行多个读的操作,但只允许一个写的操作,比如一个文件,只要其内容不变可以让多个线程同时读,不必做排他的锁定,排他的锁定只有在写的时候需要,以保证别的线程不会看到数据不完整的文件。ReadWriteLock可满足这种需要。ReadWriteLock内置两个Lock<SPAN lang=ZH-CN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New

小儿汉森四磨汤的功效
冠心病的症状与治疗
糖尿病胃轻瘫便秘如何治疗
薏芽健脾凝胶服用说明
猜你会喜欢的
猜你会喜欢的