java第八章问答题
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1.何为线程和多线程?如何建立多线程?
答:线程:是一个程序内部的顺序控制流
两种方式,第一种继承Thread,第二种实现Runnable
2.线程的生命周期由哪几种状态?各状态之间分别用哪些方法切换?
答:新建、就绪、运行、阻塞、死亡五种状态。
1、线程通过new方法创建,调用start,线程进入就绪状态,等待系统的调度(时间
片轮转调度)。当系统调度,进入运行状态。正常结束或者异常退出,进程进入死亡状态。
2、处于运行状态的线程若遇到sleep,则线程进入睡眠状态,不会让出资源锁,sleep
结束,线程转为就绪状态,等待系统重新调度。
3、处于运行状态的线程可能在等待io,也可能进入挂起状态。io完成,转为就绪状态。
4、处于运行状态的线程yield,线程转为就绪状态。(yield只让给权限比自己高的)
5、处于运行状态的线程遇到wait,线程处于等待状态,需要notify()/notifyALL来
唤醒线程,唤醒后的线程处于锁定状态,获取了“同步锁”,之后,线程才转为就绪状态。处于运行的线程synchronized,加上后变成同步操作。处于锁定状态,获取了“同步锁”,之后,线程才转为就绪状态。
3.Java程序实现多线程有哪些途径?
•答:1.继承Thread类,重写run方法
• 2.实现Runnable接口,重写run方法,实现Runnable接口的实现类
• 3.通过Callable和FutureTask创建线程的实例对象作为Thread构造函数的taget
4.通过线程池创建线程