Java大数据面试复习30天冲刺 - 日积月累,每日五题Day04——JavaSE

Posted Maynor学长

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java大数据面试复习30天冲刺 - 日积月累,每日五题Day04——JavaSE相关的知识,希望对你有一定的参考价值。

创建线程有几种方式

1.通过继承Thread类实现,实现简单但不可以继承其他类,多个线程之间无法共享该线程类的实例变量。
2.实现Runnable接口,较继承Thread类,避免继承的局限性,适合资源共享。
3.使用Callable,方法中可以有返回值,并且抛出异常。
4.创建线程池实现,线程池提供了一个线程队列,队列中保存所有等待状态的线程,避免创建与销毁额外开销,提高了响应速度。

https://blog.csdn.net/longshengguoji/article/details/41126119

线程的生命周期

线程的生命周期:线程要经历新建、就绪、运行(活动)、阻塞和死亡五种不同的状态。这五种状态都可以通过Thread类中的方法进行控制。
① 新建状态 、使用new 操作符创建一个线程后,该线程仅仅是一个空对象,这时的线程处于创建状态。
② 就绪状态 、使用start()方法启动一个线程后,系统为该线程分配了除CPU外的所需资源,使该线程处于就绪状态。
③ 运行状态 、系统真正执行线程的run()方法。
④ 阻塞和唤醒线程阻塞状态 、使用sleep(),wait()方法进行操作。
⑤ 死亡状态 、线程执行了interrupt()或stop()方法,那么它也会以异常退出的方式进入死亡状态。
https://blog.csdn.net/xiaosheng900523/article/details/82964768

Runnable 和 Callable 的区别

主要区别
Runnable 接口 run 方法无返回值;Callable 接口 call 方法有返回值,支持泛型
Runnable 接口 run 方法只能抛出运行时异常,且无法捕获处理;Callable 接口 call 方法允许抛出异常,可以获取异常信息

https://blog.csdn.net/mryang125/article/details/81878168

如何启动一个新线程、调用 start 和 run 方法的区别?

线程对象调用 run 方法不开启线程。仅是对象调用方法。
线程对象调用 start 开启线程,并让 jvm 调用 run 方法在开启的线程中执行
调用 start 方法可以启动线程,并且使得线程进入就绪状态,而 run 方法只是 thread 的一个普通方法,还是在主线程中执行。

https://blog.csdn.net/woshizisezise/article/details/79938915

wait()和 sleep()的区别?

  1. 来自不同的类
    wait():来自 Object 类;
    sleep():来自 Thread 类;
    2.关于锁的释放:
    wait():在等待的过程中会释放锁;
    sleep():在等待的过程中不会释放锁
    3.使用的范围:
    wait():必须在同步代码块中使用;
    sleep():可以在任何地方使用;
    4.是否需要捕获异常
    wait():不需要捕获异常;
    sleep():需要捕获异常;

https://blog.csdn.net/xyh269/article/details/52613507

以上是关于Java大数据面试复习30天冲刺 - 日积月累,每日五题Day04——JavaSE的主要内容,如果未能解决你的问题,请参考以下文章

Java大数据面试复习30天冲刺 - 日积月累,每日五题Day04——JavaSE

Java大数据面试复习30天冲刺 - 日积月累,每日五题Day02——JavaSE

大数据开发岗面试复习30天冲刺 - 日积月累,每日五题Day21——Spark8

大数据开发岗面试复习30天冲刺 - 日积月累,每日五题Day29——数据倾斜2

大数据开发岗面试复习30天冲刺 - 日积月累,每日五题Day23——Spark10

大数据开发岗面试复习30天冲刺 - 日积月累,每日五题Day24——Spark11