java之lock的使用

使用场景:多线程,一个线程实时行情更新(insert   + delete===>表),另一个线程从表里读取。。。两个线程同时执行 出现表id找不到----------》遇到这种情况就需要locked了!

(书面语:在多线程编程里面一个重要的概念是锁定,如果一个资源是多个线程共享的,为了保证数据的完整性,在进行事务性操作时需要将共享资源锁定,这样可以保证在做事务性操作时只有一个线程能对资源进行操作,从而保证数据的完整性。在5.0以前,锁定的功能是由Synchronized关键字来实现的。)

1》Lock lock =newReentrantLock();// 锁

lock.lock();// 取得锁

TODO:操作代码

lock.unlock();// 释放锁

-------------------------------------》顺序执行TODO

2》ReentrantReadWriteLock lock=new ReentrantReadWriteLock()

加锁:readLock().lock()    writeLock().lock()

释放锁 :readLock().unlock()  writeLock().unlock()

例如:在线程run()方法里1

   1writeLock().lock() 2delete表3writeLock().unlock()

1readLock().lock()2 select表3readLock().unlock()

----------》线程再多都不会影响数据完整性!

(书面语:ReadWriteLock内置两个Lock,一个是读的Lock,一个是写的Lock。多个线程可同时得到读的Lock,但只有一个线程能得到写的Lock,而且写的Lock被锁定后,任何线程都不能得到Lock,ReadWriteLockTest很适合处理类似文件的读写操作)

你可能感兴趣的:(java之lock的使用)