Java中悲观锁的方式有以下几种:
synchronized关键字:使用synchronized关键字可以对代码块或方法进行加锁,保证同一时间只有一个线程可以执行该代码块或方法。
ReentrantLock类:通过ReentrantLock类和Lock接口可以实现悲观锁。可以使用lock()方法获取锁,并在使用完后使用unlock()方法释放锁。
ReadWriteLock类:通过ReadWriteLock类可以实现悲观锁的读写分离。读锁可以被多个线程同时持有,写锁只能被一个线程持有。
Semaphore类:通过Semaphore类可以控制同时访问某个资源的线程数量。可以通过acquire()方法获取许可,release()方法释放许可。
LockSupport类:通过LockSupport类可以阻塞和唤醒线程。可以使用park()方法阻塞线程,unpark()方法唤醒线程。
这些悲观锁的方式都可以保证在同一时间只有一个线程可以访问共享资源,从而解决并发访问的问题。