java知识点汇总(三)

109 阅读2分钟

java知识汇总

基础篇

线程

  • 创建线程的方式及实现

    继承thread类,实现runnable接口,使用callable和future创建线程
    使用线程池来创建例如Executor框架
    
  • sleep() 、join()、yield()有什么区别

    sleep会让线程进入阻塞状态,但是不会释放锁
    wait方法需要和notify以及notifyall一起使用,必须在synchronized语句块
    内使用
    yield和sleep类似也不会释放锁,区别在于它没有参数,使当前线程重新回到可
    执行状态
    join方法会使得当前线程等待调用join方法的线程结束后才能执行
    
  • ThreadLocal 原理分析

    每个线程内都有自己的实例副本,该副本只能由当前线程来使用,不存在多线程内的共享
    
  • 讲讲线程池的实现原理

    executors.newFixedThreadPool(10)初始化包含10个线程的线程池
    通过executor.excute方法来提交任务
    
    核心线程数(超过核心线程数的任务将被保存到阻塞队列)
    最大线程数(线程池中允许的最大线程数)
    线程存活时间(线程空闲时的存活时间)
    unit(存活时间的单位)
    workqueue  保存等待被执行的任务的阻塞队列,且任务必须实现runnable接口,ArrayBlockQueue和
    linkBlockQueue
    
  • 线程池的几种方式

    newFixedThreadPool(10) 指定线程数的线程池
    newCachedThreadPool 可缓存线程的线程池
    newSingleThreadExecutor 单线程线程池
    newScheduledThreadPool 指定时间内周期性的执行提交的任务
    
  • 线程的生命周期

    新建,就绪,运行,阻塞和死亡五个状态
    新建一个线程时此线程进入新建状态
    线程被启动,等待被分配给cpu时间片,正在就绪队列中排队等候获取cpu资源
    获取cpu资源正在被执行(run方法)
    由于某种原因正在运行的线程让出cpu并暂停自己的执行,进入阻塞状态
    线程执行完毕或者被其他线程杀死进入死亡状态