一、Java面试题基础第十天

一、Java面试题基础第十天

1.什么是反射?

Java是一门静态语言,它通过编译以后才能执行的编程语言,但是可以通过反射使Java成为一个准动态语言,

Java在运行过程中动态获取获取对象的属性,调用它的方法,就叫做反射

2.反射有哪些应用场景呢?

1.jdbc连接数据库的时候加载驱动时Class.forName()

2.Java动态代理就是通过反射实现的

3.Spring 创建对象时就是使用的反射

3.讲讲什么是泛型?

Java泛型是J2 SE1.5中引入的一个新特性,其本质是参数化类型,也就是说所操作的数据类型被指定为一个参数(type parameter)这种参数类型可以用在接口和方法的创建中,分别称为泛型类、泛型接口、泛型方法。

泛型作用

**第一是泛化。**可以用T代表任意类型Java语言中引入泛型是一个较大的功能增强不仅语言、类型系统和编译器有了较大的变化,以支持泛型,而且类库也进行了大翻修,所以许多重要的类,比如集合框架,都已经成为泛型化的了,这带来了很多好处。

**第二是类型安全。**泛型的一个主要目标就是提高Java程序的类型安全,使用泛型可以使编译器知道变量的类型限制,进而可以在更高程度上验证类型假设。如果不用泛型,则必须使用强制类型转换,而强制类型转换不安全,在运行期可能发生ClassCast Exception异常,如果使用泛型,则会在编译期就能发现该错误。

**第三是消除强制类型转换。**泛型可以消除源代码中的许多强制类型转换,这样可以使代码更加可读,并减少出错的机会。

**第四是向后兼容。**支持泛型的Java编译器(例如JDK1.5中的Javac)可以用来编译经过泛型扩充的Java程序(Generics Java程序),但是现有的没有使用泛型扩充的Java程序仍然可以用这些编译器来编译。 [1]

4.如何停止一个正在运行的线程?

有几种方式。

1、使用线程的stop方法

使用stop()方法可以强制终止线程。不过stop是一个被废弃掉的方法,不推荐使用。

使用Stop方法,会一直向上传播ThreadDeath异常,从而使得目标线程解锁所有锁住的监视器,即释放掉所有的对象锁。使得之前被锁住的对象得不到同步的处理,因此可能会造成数据不一致的问题。

2、使用interrupt方法中断线程,该方法只是告诉线程要终止,但最终何时终止取决于计算机。调用interrupt方法仅仅是在当前线程中打了一个停止的标记,并不是真的停止线程。

接着调用 Thread.currentThread().isInterrupted()方法,可以用来判断当前线程是否被终止,通过这个判断我们可以做一些业务逻辑处理,通常如果isInterrupted返回true的话,会抛一个中断异常,然后通过try-catch捕获。

3、设置标志位

设置标志位,当标识位为某个值时,使线程正常退出。设置标志位是用到了共享变量的方式,为了保证共享变量在内存中的可见性,可以使用volatile修饰它,这样的话,变量取值始终会从主存中获取最新值。

但是这种volatile标记共享变量的方式,在线程发生阻塞时是无法完成响应的。比如调用Thread.sleep() 方法之后,线程处于不可运行状态,即便是主线程修改了共享变量的值,该线程此时根本无法检查循环标志,所以也就无法实现线程中断。

因此,interrupt() 加上手动抛异常的方式是目前中断一个正在运行的线程最为正确的方式了。

相关推荐
Learner6 分钟前
Python异常处理
java·前端·python
tao3556679 分钟前
VS Code登录codex,报错(os error 10013)
java·服务器·前端
superman超哥10 分钟前
Context与任务上下文传递:Rust异步编程的信息高速公路
开发语言·rust·编程语言·context与任务上下文传递·rust异步编程
步达硬件11 分钟前
【Matlab】批量自定义图像处理
开发语言·matlab
军军君0113 分钟前
Three.js基础功能学习七:加载器与管理器
开发语言·前端·javascript·学习·3d·threejs·三维
liulilittle14 分钟前
OPENPPP2 网络驱动模式
开发语言·网络·c++·网络协议·信息与通信·通信
信创天地16 分钟前
核心系统去 “O” 攻坚:信创数据库迁移的双轨运行与数据一致性保障方案
java·大数据·数据库·金融·架构·政务
mjhcsp18 分钟前
C++ AC 自动机:原理、实现与应用全解析
java·开发语言·c++·ac 自动机
huihuihuanhuan.xin19 分钟前
后端八股之java并发编程
java·开发语言
茶本无香23 分钟前
设计模式之二—原型模式:灵活的对象克隆机制
java·设计模式·原型模式