Java中多线程加锁的方法有以下几种:
synchronized关键字:通过在方法前面或代码块前面加上synchronized关键字来实现加锁。synchronized关键字可以修饰方法和代码块,当某个线程进入synchronized修饰的方法或代码块时,会自动获取该方法或代码块所在对象的锁,其他线程需要等待锁释放才能进入。
ReentrantLock类:ReentrantLock类是Java提供的一个可重入锁,通过创建ReentrantLock对象来使用。可以通过lock()方法获取锁,通过unlock()方法释放锁。与synchronized不同的是,ReentrantLock类提供了更多的功能,如可以获取锁的公平性、可中断的获取锁等。
Lock接口的实现类:除了ReentrantLock类,Java还提供了其他实现了Lock接口的类,如ReadWriteLock、StampedLock等,这些类都提供了更多的锁机制,以满足不同的需求。
synchronized关键字和Lock接口的组合使用:有时候需要在某个方法或代码块中加锁,但又不希望该方法或代码块锁住太长时间,可以使用Lock接口的tryLock()方法来尝试获取锁,如果获取成功则执行相应的代码,获取失败则执行其他逻辑。
以上是Java中多线程加锁的常用方法,根据不同的需求选择合适的方法来实现线程安全。