面试汇总——JavaSE——关键字

根据牛客网的面试经验的题进行的汇总,里面的内容是看别人的博客或者其东西进行汇总的,将这些的知识总结一下,方便自己查看和复习用
牛客网

关键字

Java关键字
请你讲讲Java里面的final关键字是怎么用的?

类:此类不能有子类,即不能被继承,但是要注意final类中的所有成员方法都会被隐式地指定为final方法

方法:不允许继承的子类对此方法进行修改

变量:对于基本数据类型的变量的值不能再修改,相当于常量;对于引用数据类型,不能再指向其他变量

请你谈谈关于Synchronized和lock
  1. Synchronized
    1. synchronized是Java的关键字
    2. 用完后此锁的可以自动释放,不会造成死锁,线程执行发生异常,jvm会让线程释放锁
    3. synchronized不会让等待的线程响应中断
  2. lock
    1. Lock是一个接口
    2. 在finally中主动通过unLock()去释放锁,会造成死锁,因此使用Lock时需要在finally块中释放锁
    3. Lock可以让等待锁的线程响应中断
    4. 当无法获取到锁时,有可能会释放锁tryLock()
请你介绍一下volatile
  1. volatile可以在多线程的情况中实现禁止指令重排的问题
  2. 可以实现可见性,因为每个线程都有自己的工作内存,将变量从主存中复制读取以后,对变量的操作,每个线程都是不可见的,除非操作完变量后将其写入内存,其他线程再读取,此时才可知道变量发生改变;但是volatile关键字使这个变量可见,即一个线程对这个变量进行修改时,其他线程会知道此变量发生变化了
  3. 被volatile定义的变量,系统每次用到它时都是直接从主存中读取,而不是各个线程的工作内存
请你介绍一下Syncronized锁,如果用这个关键字修饰一个静态方法,锁住了什么?如果修饰成员方法,锁住了什么?

修饰静态方法,锁住的是一个类,即只要的同一个类就会产生互斥

修饰成员方法,锁的是对象,即使是同一个类,只要对象不同,就不会产生互斥

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值