=====================================================================
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