美文网首页
java之lock的使用

java之lock的使用

作者: just_me1989 | 来源:发表于2017-05-12 14:18 被阅读0次

    使用场景:多线程,一个线程实时行情更新(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的使用

          本文链接:https://www.haomeiwen.com/subject/nciztxtx.html