锁是一种工具,用于控制对共享资源的访问;

    1. Lock和synchronized,这两个常见的锁,他们都可以达到线程安全的目的,但是在使用上和功能上又有较大的不同
    2. Lock并不是用来代替synchronized的,而是当使用synchronized不合适或不足以满足要求的时候,来提供高级功能的;
    3. Lock接口最常见的实现类是ReetranLock,通常情况下,Lock只允许一个线程来访问这个共享资源。不过有的时候,一些特殊的实现也可允许并发访问(读),比如ReadWriteLock里面的ReadLock