多线程面试题--线程基础

目录

线程与进程的关系

什么是进程

 什么是线程

区别

并行和并发的区别

单核情况

多核情况

 区别

线程创建的方式

继承Thread类

实现Runnable接口 

 实现Callable接口

线程池

 runnable 和 callable 有什么区别?

 什么时候抛出异常,处理异常?

线程的 run()和 start()有什么区别?

线程包括哪些状态,状态之间如何变化的?

 变化图解​编辑

总结

 如何保证不同线程执行顺序

notify()和 notifyAll()有什么区别?

wait和sleep方法的不同?

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


线程与进程的关系

什么是进程

 什么是线程

 

区别

并行和并发的区别

单核情况

多核情况

 区别

 

线程创建的方式

继承Thread类

实现Runnable接口 

 实现Callable接口

线程池

 runnable 和 callable 有什么区别?

 

 

 什么时候抛出异常,处理异常?

1、在通用的方法里,不要try去捕获错误,而是直接抛出异常给调用层处理
2、用户访问界面处理掉所有可能的异常,并记录详细错误日志,然后返回友好的错误界面给用户,不要抛异常给用户,不友好.

异常应当在下层方法中不符合逻辑、出现异常的时候抛出,在上层进行捕获.

同样的,假使你为别人提供类库方法,在你的方法中,存在问题就应该抛出。

因为别人代码可能依赖于或者调用你的代码,在调用方可进行异常的捕获,从而能得到最原始的异常信息。

这就好比,小孩子你饿了,你就哭就是了(throw),没必要在吃奶阶段(下层)就开始坚强。

而处理问题则交给小孩的母亲(上层),因为她知道小孩可能会存在饿了就会哭的风险(可能会抛出异常),她会进行保护性应对(try catch)。

线程的 run()和 start()有什么区别?

start(): 用来启动线程,通过该线程调用run方法执行run方法中所定义的逻辑代码。start方法只能被调用一次。

run(): 封装了要被线程执行的代码,可以被调用多次。

线程包括哪些状态,状态之间如何变化的?

 变化图解

总结

 

 如何保证不同线程执行顺序

notify()notifyAll()有什么区别?

waitsleep方法的不同?

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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值