深入理解多线程之一文读懂锁
什么是锁锁的概念源于生活,每家每户都有一把锁,只有持有钥匙才能打开锁进入房间。对于程序来说,就是防止其他线程进入,先到的线程进入房间锁上门,后到的线程看到上锁了,就在门口排队等待。 为什么需要锁多线程并发的场景下,防止多个线程同时读写某一块内存区域,造成数据的不一致性。 java中的锁首先说明:Java多线程的锁都是基于对象的,Java中的每一个对象都可以作为一个锁。 java中的锁分为内置锁(synchronized)和显式锁(ReentrantLock),其中内置锁是JVM提供的最便捷的线程同步工具,在代码块或方法声明上添加synchronized关键字即可使用内置锁。使用内置锁能够简化并发模型;随着JVM的升级,几乎不需要修改代码,就可以直接享受JVM在内置锁上的优化成果。既然内置锁已经这么好了,那为什么还需要显式锁呢? synchronized没有等待超时时间,获取不到锁会无限等待; 无法中断,如果我们想外部线程发送中断信号的方式停止当前线程获取锁,不得行; 我们想为锁维持多个等待队列,比如一个生产者队列,一个消费者队列,一边提高锁的效率。 synchronized只...




