Synchronized和ReentrantLock的区别?
①两者都是可重入锁
②Synchronized依赖于JVM,而ReentrantLock依赖于API。
③ReentrantLock比Synchronized增加了一些高级功能。比如:等待可中断、可实现公平锁、可实现选择性通知。
④性能已经不是选择标准了。
Synchronized关键字和Volatile关键字的比较?
1、volatile关键字是线程同步的轻量级实现,所以volatile性能肯定比synchronized关键字要好。但是volatile关键字只能用于变量,而synchronized可以修饰方法以及代码块。所以在实际开发中使用synchronized关键字的场景还是要更多一些。
2、多线程访问volatile关键字不会发生阻塞,而synchronized关键字可能会发生阻塞。
3、volatile关键字能保证数据的可见性,但是不能保证数据的原子性。synchronized两者都可以保证。
4、volatile关键字主要用于解决变量在多个线程之间的可见性,而synchronized关键字解决的是多个线程之间访问资源的同步性。