Sunday, January 10, 2021

ReentrantLock

 =====================================================================

public class RenntrantLockActivity extends AppCompatActivity {

    Lock lock;

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_renntrant_lock);

        lock = new ReentrantLock();

        doSth();

    }

    public void doSth() {

        lock.lock();

        try {

            //这里执行线程同步操作

        } finally {

            lock.unlock();

        }

    }

}

 =====================================================================

使用 ReentrantLock 很好理解,就好比我们现实的锁头是一样道理的。

使用 ReentrantLock 的一般组合是 lock 与 unlock 成对出现的,需要注意的是,千万不要忘记调用 unlock 来释放锁,否则可能会引发死锁等问题。如果忘记了在finally块中释放锁,可能会在程序中留下一个定时炸弹,随时都会炸了,而是用 synchronized,JVM 将确保锁会获得自动释放,这也是为什么 Lock 没有完全替代掉 synchronized 的原因


No comments:

Post a Comment

n8n index

 【n8n免費本地端部署】Windows版|程式安裝x指令大補帖  【一鍵安裝 n8n】圖文教學,獲得無限額度自動化工具&限時免費升級企業版功能