• 备战2022秋招系列:国内外一线互联网大厂(Java岗)必备高刷手册


    恍恍惚惚2022年已接8月份了!

    不知道小伙伴们有没有在每一年的年末总结这一年发生的事件和问题的习惯(反正小编有...)

    当然这些都已经过去,我们还是要向前看,今天小编特意给大家整理了一份《国内外一线互联网大厂(Java岗)必备高刷手册》

    为了方便大家去观看小编已经把每个知识点单独的整理成了一个文件夹,足足16个大专题手册!

    需要面试技巧的朋友点——【传送门】——即可!

     

    内容展示:

    Java基础:

    集合容器:

    Java异常面试题:

    并发编程:

    springMVC面试题:

    spring面试题:

    MyBatis面试题:

    jvm面试题:

    数据库面试题:

    最后:

    由 于文章篇幅原因这里全部内容就不一一展示了。

    线程的生命周期

    在线程的生命周期中,它要经过新建(New)、就绪(Runnable)、运行(Running)、阻塞(Blocked)和死亡(Dead)5种状态

    • 新建状态 :当程序使用new关键字创建了一个线程之后,该线程就处于新建状态,此时仅由JVM为其分配内存,并初始化其成员变量的值
    • 就绪状态 :当线程对象调用了start()方法之后,该线程处于就绪状态。Java虚拟机会为其创建方法调用栈和程序计数器,等待调度运行
    • 运行状态 :如果处于就绪状态的线程获得了CPU,开始执行run()方法的线程执行体,则该线程处于运行状态
    • 阻塞状态 :当处于运行状态的线程失去所占用资源之后,便进入阻塞状态
    • 死亡状态 :线程在run()方法执行结束后进入死亡状态。此外,如果线程执行了interrupt()或stop()方法,那么它也会以异常退出的方式进入死亡状态。

    线程状态的控制

    可以 对照上面的线程状态流转图 来看具体的方法,这样更清楚具体作用:

    1.start()

    启动当前线程, 调用当前线程的run()方法

    2.run()

    通常需要重写Thread类中的此方法, 将创建的线程要执行的操作声明在此方法中

    3.yield()

    释放当前CPU的执行权

    4.join()

    在线程a中调用线程b的join(), 此时线程a进入阻塞状态, 知道线程b完全执行完以后, 线程a才结束阻塞状态

    5.sleep(long militime)

    让线程睡眠指定的毫秒数,在指定时间内,线程是阻塞状态

    6.wait()

    一旦执行此方法,当前线程就会进入阻塞,一旦执行wait()会释放同步监视器。

    7.sleep()和wait()的异同

    相同点:两个方法一旦执行,都可以让线程进入阻塞状态。

    不同点:

    1) 两个方法声明的位置不同:Thread类中声明sleep(),Object类中声明wait()

    2) 调用要求不同:sleep()可以在任何需要的场景下调用。wait()必须在同步代码块中调用。

    2) 关于是否释放同步监视器:如果两个方法都使用在同步代码块呵呵同步方法中,sleep不会释放锁,wait会释放锁。

  • 相关阅读:
    【数据结构】带头双向循环链表的实现(C语言)
    【jmeter】连接mysql无法使用executeQuery()
    [附源码]java毕业设计高校教师教学助手系统的设计与实现
    u盘被格式化了文件还可以恢复吗?
    简单介绍二分类问题评价指标
    基于STM32的u8g2移植以及学习
    MySQL数据库之主从复制
    SaaS软件工程师成长路径
    数据可视化系列教程|六大组件基础知识
    周赛372(正难则反、枚举+贪心、异或位运算、离线+单调栈)
  • 原文地址:https://blog.csdn.net/JHIII/article/details/126283461