首页 > 编程语言 >Java面试小练(七)

Java面试小练(七)

时间:2023-12-15 18:36:55浏览次数:36  
标签:Exception Java 小练 面试 线程 sleep 方法 wait

1). Java中Error与Exception的区别是什么 ? 项目开发时自定义异常为什么要继承RuntimeException,而不是Exception ?

Java中的Error和Exception都是Throwable类的子类,但它们之间有一些区别。

Error通常表示JVM或底层系统出现了无法恢复的问题,例如OutOfMemoryError、StackOverflowError等。这些错误通常不应该被捕获和处理,因为它们表示系统已经无法正常工作,程序无法继续执行。

而Exception通常表示程序运行时遇到了可处理的问题,例如NullPointerException、IOException等。这些异常通常应该被捕获和处理,以防止程序崩溃或出现不必要的错误。

在项目开发中,自定义异常通常应该继承Exception或RuntimeException。Exception是所有可检查异常的基类,它表示可能会在方法调用期间抛出的异常。如果自定义异常是可检查异常,那么应该继承Exception。

而RuntimeException是所有非检查异常的基类,它表示程序中的错误,例如NullPointerException、IllegalArgumentException等。如果自定义异常是非检查异常,那么应该继承RuntimeException。

继承RuntimeException的自定义异常通常表示程序中的逻辑错误,例如参数无效、状态不正确等。这些异常通常不需要在方法签名中声明,并且可以在方法内部直接抛出。相反,继承Exception的自定义异常通常表示外部错误,例如网络故障、文件不存在等。这些异常通常需要在方法签名中声明,并且应该由调用方处理。

2). Java中的线程有哪些状态 ,分别表示什么含义啊 。【JavaSE 多线程相关】

在Java中,线程有以下几种状态:

  1. NEW(新建):当线程对象被创建但还没有调用start()方法时,线程处于新建状态。

  2. RUNNABLE(可运行):当线程调用start()方法后,线程处于可运行状态。在这个状态下,线程可能正在执行,也可能正在等待CPU时间片。

  3. BLOCKED(阻塞):线程处于阻塞状态是因为它在等待监视器锁。例如,当线程试图进入一个synchronized代码块时,如果该锁已经被其他线程持有,那么该线程就会被阻塞。

  4. WAITING(等待):线程处于等待状态是因为它正在等待其他线程采取某些操作。例如,线程调用了Object.wait()、Thread.join()或LockSupport.park()方法时,会进入等待状态。

  5. TIMED_WAITING(计时等待):线程处于计时等待状态是因为它正在等待一段时间。例如,线程调用了Thread.sleep()、Object.wait()或Thread.join()方法,并指定了等待时间,会进入计时等待状态。

  6. TERMINATED(终止):线程处于终止状态是因为它已经执行完毕或者因为出现了异常而终止。

3). Java中的sleep 与 wait 方法的区别是什么 。【JavaSE 多线程相关】

在Java中,sleep()和wait()方法都可以用于线程的等待,但它们有一些重要的区别。

  1. sleep()方法来自Thread类,而wait()方法来自Object类。sleep()方法是静态方法,可以直接通过Thread类调用,而wait()方法必须在同步块或同步方法中调用,因为它需要在获取对象的监视器锁后才能调用。

  2. sleep()方法会使当前正在执行的线程休眠指定的时间,不会释放对象的监视器锁。而wait()方法会使当前线程等待,同时会释放对象的监视器锁,直到其他线程调用notify()或notifyAll()方法来唤醒等待的线程。

  3. sleep()方法可以用于任何地方,而wait()方法只能在同步块或同步方法中使用。

  4. sleep()方法是线程的静态方法,它可以在任何地方使用,而wait()方法是Object类的实例方法,只能在同步代码块或同步方法中使用。

总的来说,sleep()方法是线程的静态方法,用于线程休眠一段时间,不会释放对象的监视器锁;

而wait()方法是Object类的实例方法,用于线程等待,会释放对象的监视器锁,直到其他线程通知或中断。

标签:Exception,Java,小练,面试,线程,sleep,方法,wait
From: https://www.cnblogs.com/yifan0820/p/17903989.html

相关文章

  • Tomcat servelet javax 和 jakarta
    *[GitHub-apache/tomcat-jakartaee-migration:ApacheTomcatmigrationtoolforJakartaEE](https://github.com/apache/tomcat-jakartaee-migration)*[未来可期!但别再傻傻分不清javax和jakarta](https://baijiahao.baidu.com/s?id=1758965939027753195)*[[Solved]The......
  • Java Web开发阶段注解
    @Component标注Spring管理的Bean,使用@Component注解在一个类上,表示将此类标记为Spring容器中的一个Bean通过路径扫描来自动侦测以及自动装配到Spring容器中@Controller用于指示Spring类的实例是一个控制器,相对于实现Controller接口更加简单,使用Controller注解可以同时处理多个......
  • 无涯教程-Java - String Buffer & String Builder函数
    StringBuffer和StringBuilder类在需要对字符串进行大量修改时使用。与字符串不同,可以不停地修改StringBuffer和Stringbuilder类型的对象,而不会留下很多新的未使用对象。StringBuilder类是从Java5开始引入的,StringBuffer和StringBuilder之间的主要区别是StringBuilders......
  • java方法的定义与执行
    java中的方法在类中定义。定义方法格式:访问修饰符  返回值类型  方法名(参数列表){  ... 执行内容 ...  return返回值;}访问修饰符:表示方法在哪里能被访问到返回值类型:表示方法返回的数据的类型,如果没有返回值,就用void参数:可选的publicclassTest8{......
  • 秦疆的Java课程笔记:72 面向对象 instanceof和类型转换
    instanceof关键字,用于判断左边的实例对象是否是右边的类的实例。先创建4个类,父类Person,其子类Student和Teacher,测试类Application。在Application中测试instanceof语句://父类publicclassPerson{}//子类publicclassTeacherextendsPerson{}//子类publicclassStud......
  • 秦疆的Java课程笔记:71 面向对象 什么是多态
    多态即同一方法可以根据发送对象的不同而采用多种不同的行为方式。一个对象的实际类型是确定的,但可以指向对象的引用的类型有很多。(指向父类或者有关系的类。)//父类=======================================publicclassPerson{}//子类=================================......
  • 《Java编程思想第四版》学习笔记47--关于handleEvent
    (4)增加可以被handleEvent()方法测试事件的组件到练习3中。过载handleEvent()并在文字字段中为每个组件显示特定的消息。                                                ......
  • 无涯教程-Java - toUpperCase()函数
    该方法返回指定的char值的大写形式。toUpperCase()-语法chartoUpperCase(charch)这是参数的详细信息-ch  - 原始字符类型。toUpperCase()-返回值此方法返回指定的char值的大写形式。toUpperCase()-示例publicclassTest{publicstaticvoidmain(Str......
  • javaweb实现文件上传与下载功能
    本文实例为大家分享了javaweb文件的上传与下载,供大家参考,具体内容如下一、文件上传要实现Web开发的上传功能,通常需要完成两步操作:一是在Web页面中添加上传输入项;二是在Servlet中读取上传文件的数据,并保存到本地硬盘中。上传大多数情况是通过表单的形式提交给服务器,使用<inputt......
  • JavaScript 浏览本地文件夹
    1.JavaScript浏览本地文件夹button.onclick=asyncfunction(){//给按钮绑定事件try{consthandler=awaitshowDirectoryPicker(//{//mode:'readwrite',//指定读写模式:读/读写//startIn:'documents'//......