1、介绍一下Syncronized锁,如果用这个关键字修饰一个静态方法,锁住了什么?如果修饰成员方法,锁住了什么?
对于普通的同步方法:
锁的是当前的对象
对于静态函数的同步方法:
锁的是指引用当前类的class对象
对于同步方法块的内容:
锁的是指Synchonized括号里配置的对象
2、介绍一下volatile?
表示被修饰的对象的修改对其他线程是可见的,每次使用它,都会去主存中重新读取。
禁止指令重排
volatile不具备原子性
3、锁有了解嘛,说一下Synchronized和lock
都是可重入锁
synchronized:是一个关键字,隐式锁,不需要关注锁释放,1.6之前是重量级锁
lock:是一个接口,显示锁(加锁和解锁自己控制),需要自己手动释放锁(一般在finally语句块中释放)
4、讲一讲Java里面的final关键字怎么用的?
被final修饰的类不能继承。被final修饰的方法不能重写。被final修饰的变量为常量,值不能改变。