JAVA中的面试题-多线程
来源:互联网 发布:网络最火的手游 编辑:程序博客网 时间:2024/06/07 05:37
面试题1:Java中创建一个线程的方式有哪几种有什么区别?
1.集成Thread类 2.实现Runnable接口 3.实现Callable接口,它的call可以作为线程的执行体,Future接口作为作为call方法的返回值,只不过这种方法不经常使用。
区别:主要讲前两个方式的区别
区别1:
继承Thread类之后,可以直接调用start方法来启动当前线程(注意!不是调用run方法)
实现Runnable接口之后,该类只是作为Thread的类的目标来启动线程。new Thread(demo).start();
区别2:
当一个类想继承Thread类,那么前提是它不能集成别的类!而实现Runnable接口的对象没有这个限制,而且实现了Runnable接口之后,还可以实现别的接口。
面试题2. 如何停止一个正在运行的线程?
(1)方法1: 调用Thread.stop()方法停止线程。
Thread.stop()不安全,已不再建议使用。
该方法天生是不安全的。使用thread.stop()停止一个线程,导致释放(解锁)所有该线程已经锁定的监视器(因沿堆栈向上传播的未检查异常ThreadDeath而解锁)。如果之前受这些监视器保护的任何对象处于不一致状态,则不一致状态的对象(受损对象)将对其他线程可见,这可能导致任意的行为。
(2)方法2: Thread.interrupt()
传递InterruptedException。这是最明智的策略,将异常传递给方法的调用者。
恢复中断。在不能上抛的情况下,如Runnable方法,必须捕获InterruptedException,并通过当前线程的interrupt()方法恢复中断状态,这样在调用栈中更高层的代码将看到引发了一个中断。
(3)方法3:停止一个线程最佳实践是 中断 + 条件变量。
中断只是一种协作机制,需要被中断的线程自己处理中断。
停止一个线程最好的做法就是利用共享的条件变量。
- JAVA中的面试题-多线程
- 面试题中的多线程
- java多线程面试题
- java多线程面试题
- java多线程面试题
- java多线程面试题
- java多线程面试题
- java多线程面试题
- Java多线程面试题
- java多线程面试题
- java 多线程面试题
- java多线程面试题
- java多线程面试题
- java多线程面试题
- java多线程面试题
- java多线程面试题
- java多线程面试题
- java多线程面试题
- 石子合并问题
- Android应用资源---状态颜色列表(Color State List)
- py自学:暴力破解校园网密码
- 前端基础知识(一)
- 山科大校赛C题
- JAVA中的面试题-多线程
- USACO 2.3 货币系统(背包/生成函数)
- Codeforces 369D Valera and Fools【思维+dp】
- 无法连接远程桌面--必须为远程桌面启用Windows防火墙例外
- MySQL(七)--索引
- 动画案例及设计模式研究
- 外卖订单量预测异常报警模型实践
- 砝码称重I
- dubbo配置文件解析