lock.lockInterruptibly()

Posted top啦它

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了lock.lockInterruptibly()相关的知识,希望对你有一定的参考价值。

lock.lockInterruptibly();当与它争抢锁的线程释放锁或者与它争抢锁的线程中断后,他会获得锁。

package fangfa;

import java.util.Vector;
import java.util.concurrent.locks.ReentrantLock;

public class Son
    public static void main(String[] args) throws InterruptedException 
        ReentrantLock lock = new ReentrantLock();
        Jasi jasi = new Jasi(lock);
        Jasi1 jasi1 = new Jasi1(lock);
        Thread thread1 = new Thread(jasi);
        Thread thread2 = new Thread(jasi1);
        thread1.start();
        thread2.start();
        Thread.sleep(1000);
        thread1.interrupt();//中断thread1
    


class Jasi implements Runnable 
    private final ReentrantLock lock;

    public Jasi(ReentrantLock lock) 
        this.lock = lock;
    

    @Override
    public void run() 
        try 
            lock.lockInterruptibly();
            System.out.println(Thread.currentThread().getName()+"获得了锁");
         catch (InterruptedException e) 
            e.printStackTrace();
        finally 
            lock.unlock();
            System.out.println(Thread.currentThread().getName()+"释放了锁");
        
    

class Jasi1 implements Runnable 
    private final ReentrantLock lock;

    public Jasi1(ReentrantLock lock) 
        this.lock = lock;
    

    @Override
    public void run() 
        try
            lock.lock();
            Thread.sleep(5000);
            System.out.println(Thread.currentThread().getName()+"获得了锁");
         catch (InterruptedException e) 
            e.printStackTrace();
         finally 
            lock.unlock();
            System.out.println(Thread.currentThread().getName()+"释放了锁");
        

    

以上是关于lock.lockInterruptibly()的主要内容,如果未能解决你的问题,请参考以下文章

lock

java的干儿子锁Lock

java的干儿子锁Lock