面试

Object类有哪些方法

  • wait(),notify(),notifyAll()
    在调用wait和notify的时候,该线程必须要已经持有该锁,然后才可调用。wait()方法用于将线程进入等待队列是可被中断的,利用interrupt()方法(中断io的话是关闭其底层资源的调度,ReentrantLock上阻塞的任务可以被中断),notify()方法用于将等待队列的线程进入锁池,notifyAll()用于将所有等待队列的线程进入锁池。
    引申:
    1) 线程协作机制 wait notify是其中一种,await_singal_singalAll 是可重入锁中的Condition对象的几个方法 sleep/yield方法是使线程休眠,这个并不会释放锁 CyclicBarrier栅栏 多个线程同时到达某个条件才能继续进行 CountDownLatch闭锁某个线程等待其他线程到达某个条件才能进行 Semaphore信号量在线程协作方面主要用于控制同时访问临界区资源的线程个数 ,当信号量设置为1时可以当锁来用。
    2)可重入锁 不可重入锁 互斥锁里面synchronized 可重入锁都是可重入的 意思是同意线程可再次获取可以持有的锁 主要用于递归的情况 不可重入锁妖小心死锁 公平锁 按照先后顺序拿到锁 非公平则不是 悲观锁 乐观锁 悲观锁读写也要都要加锁 比较重 乐观锁读不加锁 自旋锁 不通过wait等等待资源通过while循环 适合等待时间短的,相对比较占cpu资源。共享锁 排他锁 共享锁主要用在数据库读锁的时候可有多个线程进入。 读写锁 读锁当读操作时还有另外的读则可以让线程进入。 读锁操作临界区资源时,如果有读锁请求资源可以立即获取,不用等待;写锁如果有写锁过来请求资源则需要等待读锁释放之后才可获取
    3) 线程中断 线程被另外一个线程中断,被中断线程可选择什么时候中断,也可以选择不中断,会有原生函数判断当前线程是否有被中断。 线程让步 yield()方法线程选择让出cpu资源 线程休眠sleep() 线程合并 join()所谓合并,就是等待其它线程执行完,再执行当前线程,执行起来的效果就好像把其它线程合并到当前线程执行一样
  • finalize()
    清理对象的作用 垃圾回收器可调用
  • hashCode()
    返回该对象的哈希码值 索引作用
  • equals()
    作用等同于==
  • toString()
    返回该对象的字符串表示

HashCode存放在HashSet的哪里
HashMap存放着Entry数组里面,Entry里面有key(经过获取hashCode并对数组长度取模存储着),value,next。 get操作是通过hashCode确定索引位置,再经由equals获得具体位置。 put操作会先定位,如果链地址中有此Entry则更新,没有就插入头部,此处会检查threshold,超过这个值则rehash modCount也会相应增加。ConcurrentHashMap比较有用,在用迭代器遍历时删除因为同步了modCount跟expectedCount所以,迭代器迭代不会报错。

Thread中interrupt interrupted isInterrupted
isInterrupted是判断线程是否有被中断信号中断,interrupted是判断是否曾经被中断,interrupt是发出中断信号返回void

rt.jar被什么类加载器加载
启动类加载器加载,java.labg.(放入rt.jar的)本身我们拿不到启动类加载器的引用。 扩展类加载器 负责加载java平台中扩展功能的一些jar包,包括$JAVA_HOME中jre/lib/ext/.jar或-Djava.ext.dirs指定目录下的jar包。 应用程序类加载器 负责加载classpath中指定的jar包及目录中class 双亲委派模型 决定了自己重写String时候不会被启用,因为已经由拓展类加载器加载了
自定义类加载器比如用到对网络传输java字节码的时候对其进行加密。
instanceof用于判断是否被同一个类加载器加载,只有在同一个类加载器加载的前提下,类等同才有意义。
自定义String类因为有双亲委派模型就不会被类加载器加载,保证了不会被黑客黑,保证了Object类在哪都是被同意类加载器加载。

三级缓存
二级缓存是一级缓存的缓存器。
这里写图片描述

数据库连接池
(1) 程序初始化时创建连接池
(2) 使用时向连接池申请可用连接
(3) 使用完毕,将连接返还给连接池
(4) 程序退出时,断开所有连接,并释放资源

不能够创建更多的线程怎么排查
查看jvm内存,查看系统最大线程数。 查看jvm中线程大小设置,将其设置为更小则可以有更多线程。详见jvm调优。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值