900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > Java 多线程和并发编程:(二)线程同步 Lock 锁

Java 多线程和并发编程:(二)线程同步 Lock 锁

时间:2022-06-04 10:28:57

相关推荐

Java 多线程和并发编程:(二)线程同步 Lock 锁

线程同步 Lock 锁

1.Lock 锁2.步骤3.Lock 与 synchronized 的区别

1.Lock 锁

Lock 锁:对需要上锁的地方上锁

JDK1.5 后新增的功能与 Synchronized 相比,Lock 可提供多种锁方案,更灵活Java.util.concurrent.locks 中的 Lock 是一个接口,它的实现类是一个 Java 类,而不是作为语言的特性(关键字)来实现

**注意:**如果同步代码有异常,要将 unLock()放到 finally 中

2.步骤

测试代码:

import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.ReentrantLock;public class Text{public static void main(String[] args) {CountRunnable cr=new CountRunnable();//代理类的对象Thread t1=new Thread(cr,"A");Thread t2=new Thread(cr,"B");Thread t3=new Thread(cr,"C");t1.start();t2.start();t3.start();}}class CountRunnable implements Runnable {private int count=0;//默认值//创建一个Lock对象Lock lock=new ReentrantLock();@Overridepublic void run() {for(int i=0;i<10;i++){try{lock.lock();//加锁count++;try {Thread.sleep(300);} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}System.out.println(Thread.currentThread().getName()+"执行操作:count="+count);}finally{//解锁lock.unlock();}}}}

运行结果:

3.Lock 与 synchronized 的区别

Lock 是 显 示 锁 ( 手 动 开 启 和 关 闭 锁 , 别 忘 关 闭 锁),synchronized 是隐式锁Lock 只有代码块锁,synchronized 有代码块锁和方法锁使用 Lock 锁,JVM 将花费较少的时间来调度线程,性能更好,并且具有更好的扩展性(提供更多的子类)Lock 确保当一个线程位于代码的临界区时,另一个线程不进入临界区。如果其他线程试图进入锁定的代码,则它将一直等待(即被阻止),直到该对象被释放。lock()方法会对 Lock 实例对象进行加锁,因此所有对该对象调用 lock() 方法的线程都会被阻塞,直到该 Lock 对象的 unlock()方法被调用

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。