Java大厂面试题整理(一)

  1. 创建线程有哪几种方式
(1)继承 Thread 重写 run 方法
(2)实现 Runnable 接口
(3)实现 Callable 接口
  1. sleep() 和 wait() 有什么区别?
(1)类的不同:sleep() 来自 Thread,wait() 来自 Object
(2)释放锁:sleep() 不释放锁;wait() 释放锁
(3)用法不同:sleep() 时间到会自动恢复;wait() 可以使用 notify()/notifyAll()直接唤醒
  1. 线程池都有哪些状态?
(1)RUNNING:这是最正常的状态,接受新的任务,处理等待队列中的任务
(2)SHUTDOWN:不接受新的任务提交,但是会继续处理等待队列中的任务
(3)STOP:不接受新的任务提交,不再处理等待队列中的任务,中断正在执行任务的线程
(4)TIDYING:所有的任务都销毁了,workCount 为 0,线程池的状态在转换为 TIDYING 状态时,会执行钩子方法 terminated()
(5)TERMINATED:terminated()方法结束后,线程池的状态就会变成这个

你可能感兴趣的:(java,jvm,开发语言)