Java中使用synchronized和Lock对象获取对象锁 - 编程入门网
rs.f(); } }.start(); new Thread() { public void run() { rs.g(); } }.start(); rs.h(); }}
Java中使用synchronized和Lock对象获取对象锁(4)时间:2011-01-25 zhangjunhd结果: Thread-0:not synchronized in f() Thread-0:synchronized in f() main:not synchronized in h() main:synchronized in h() Thread-1:not synchronized in g() Thread-1:synchronized in g() Thread-0:synchronized in f() main:synchronized in h() Thread-1:synchronized in g() Thread-0:synchronized in f() main:synchronized in h() Thread-1:synchronized in g() Thread-0:synchronized in f() main:synchronized in h() Thread-1:synchronized in g() Thread-0:synchronized in f() main:synchronized in h() Thread-1:synchronized in g() Java中使用synchronized和Lock对象获取对象锁(5)时间:2011-01-25 zhangjunhd3.Lock对象锁 除了使用synchronized外,还可以使用Lock对象来创建临界区。Resource3.java的演示效果同Resource1.java;Resource4.java的演示效果同Resource2.java。 Resource3.java package com.zj.lock;import java.util.concurrent.TimeUnit;import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.ReentrantLock; public class Resource3 { private Lock lock = new ReentrantLock(); public void f() { // other operations should not be locked... System.out.println(Thread.currentThread().getName() + ":not synchronized in f()"); lock.lock(); try { for (int i = 0; i < 5; i++) { System.out.println(Thread.currentThread().getName() + ":synchronized in f()"); try { TimeUnit.SECONDS.sleep(3); } catch (InterruptedException e) { e.printStackTrace(); } } } finally { lock.unlock(); } } public void g() { // other operations should not be locked... System.out.println(Thread.currentThread().getName() + ":not synchronized in g()"); lock.lock(); try { for (int i = 0; i < 5; i++) { System.out.println(Thread.currentThread().getName() + ":synchronized in g()"); try { TimeUnit.SECONDS.sleep(3); } catch (InterruptedException e) { e.printStackTrace(); } } } finally { lock.unlock(); } } public void h() { // other operations should not be locked... System.out.println(Thread.currentThread().getName() + ":not synchronized in h()"); lock.lock(); try { for (int i = 0; i < 5; i++) { System.out.println(Thread.currentThread().getName() + ":synchronized in h()"); try { TimeUnit.SECONDS.sleep(3); } catch (InterruptedException e) { e.printStackTrace(); |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |