相关疑难解决方法(0)

线程 - 为什么锁定必须遵循try和finally

一个锁总是后跟一个try/finally块,为什么?

ReentrantReadWriteLock readWriteLockBitmap = new ReentrantReadWriteLock();
Lock read = readWriteLockBitmap.readLock();
Lock write = readWriteLockBitmap.writeLock();
int shared = 0;

public void function1(){
    read.lock();
    try{
        //reading shared int
    }
    finally{
        read.unlock();
    }
}

public void function 2(){
    write.lock();
    try{
        //modify shared int
    }
    finally{
        write.unlock();
    }
}
Run Code Online (Sandbox Code Playgroud)

为什么有这个try/finally块而不是简单地编写代码如下:

ReentrantReadWriteLock readWriteLockBitmap = new ReentrantReadWriteLock();
Lock read = readWriteLockBitmap.readLock();
Lock write = readWriteLockBitmap.writeLock();
int shared = 0;

public void function1(){
    read.lock();
    //reading shared int
    read.unlock();
}

public void function 2(){
    write.lock();
    //modify shared int …
Run Code Online (Sandbox Code Playgroud)

java locking thread-safety

6
推荐指数
3
解决办法
3918
查看次数

标签 统计

java ×1

locking ×1

thread-safety ×1