摘要:
2.1 什么是锁 Java中的每一个对象都可以作为锁。具体表现为以下3种形式: 对于普通同步方法,锁是当前实例对象。 对于静态同步方法,锁是当前类的 Class对象 对于同步方法块,锁是 Synchonized括号里配置的对象。 当一个线程试图访问同步代码块时,它首先必须得到锁,退出或抛出异常时必须 阅读全文
摘要:
1. volatile 1.1 volatile的定义 **定义:**Java编程语言允许线程访问共享变量,为了确保共享变量能被准确和一致地更新,线程应该确保通过排他锁单独获得这个变量。Java语言提供了 volatile,在某些情况下比锁要更加方便。如果一个字段被声明成 volatile,Java 阅读全文
摘要:
避免一个线程同时获取多个锁。 避免一个线程在锁内同时占用多个资源,尽量保证每个锁只占用一个资源。 尝试使用定时锁,使用 lock.tryLock(timeout)来替代使用内部锁机制。 对于数据库锁,加锁和解锁必须在一个数据库连接里,否则会岀现解锁失败的情况。 阅读全文