- 1、本文档共10页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
多线程与并发面试題
————————————————————————————————作者:
————————————————————————————————曰期:
?
JAVA多线程和并发基础面试問答
HYPERLINK\t_blank原文链接??HYPERLINK"\t_blank译文连接?作者:Pankaj?译者:HYPERLINK\t"_blank郑旭東??校對:方腾飞
多线程和并发問題是Java技术面试中面试官比较喜欢問的問題之一。在這裏,從面试的角度列出了大部分重要的問題,不過你仍然应當牢固的掌握Java多线程基础知识来對应後来碰到的問題。(校對注:非常赞同這個观點)
Java多线程面试問題
1.進程和线程之间有什么不一样?
一种進程是一种独立(selfcontained)的运行环境,它可以被看作一种程序或者一种应用。而线程是在進程中执行的一种任务。Java运行环境是一种包括了不一样的类和程序的單一進程。线程可以被称為轻量级進程。线程需要较少的资源来创立和驻留在進程中,并且可以共享進程中的资源。
2.多线程编程的好处是什么?
在多线程程序中,多种线程被并发的执行以提高程序的效率,CPU不會由于某個线程需要等待资源而進入空闲状态。多种线程共享堆内存(heapmemory),因此创立多种线程去执行某些任务會比创立多种進程更好。举個例子,Servlets比CGI更好,是由于Servlets支持多线程而CGI不支持。
3.顾客线程和守护线程有什么区别?
當我們在Java程序中创立一种线程,它就被称為顾客线程。一种守护线程是在後台执行并且不會制止JVM终止的线程。當没有顾客线程在运行的時候,JVM关闭程序并且退出。一种守护线程创立的子线程仍然是守护线程。
4.我們怎样创立一种线程?
有两种创立线程的措施:一是实現Runnable接口,然後将它传递給Thread的构造函数,创立一种Thread對象;二是直接继承Thread类。若想理解更多可以阅讀這篇有关怎样在HYPERLINKJava中创立线程的文章。
5.有哪些不一样的线程生命周期?
當我們在Java程序中新建一种线程時,它的状态是New。當我們调用线程的start()措施時,状态被变化為Runnable。线程调度器會為Runnable线程池中的线程分派CPU時间并且讲它們的状态变化為Running。其他的线程状态尚有Waiting,Blocked?和Dead。讀這篇文章可以理解更多有关HYPERLINK线程生命周期的知识。
6.可以直接调用Thread类的run()措施么?
當然可以,不過假如我們调用了Thread的run()措施,它的行為就會和一般的措施同样,為了在新的线程中执行我們的代码,必须使用Thread.start()措施。
7.怎样让正在运行的线程暂停一段時间?
我們可以使用Thread类的Sleep()措施让线程暂停一段時间。需要注意的是,這并不會让线程终止,一旦從休眠中唤醒线程,线程的状态将會被变化為Runnable,并且根据线程调度,它将得到执行。
8.你對线程优先级的理解是什么?
每一种线程都是有优先级的,一般来說,高优先级的线程在运行時會具有优先权,但這依赖于线程调度的实現,這個实現是和操作系统有关的(OSdependent)。我們可以定义线程的优先级,不過這并不能保证高优先级的线程會在低优先级的线程前执行。线程优先级是一种int变量(從1-10),1代表最低优先级,10代表最高优先级。
9.什么是线程调度器(ThreadScheduler)和時间分片(TimeSlicing)?
线程调度器是一种操作系统服务,它负责為Runnable状态的线程分派CPU時间。一旦我們创立一种线程并启動它,它的执行便依赖于线程调度器的实現。時间分片是指将可用的CPU時间分派給可用的Runnable线程的過程。分派CPU時间可以基于线程优先级或者线程等待的時间。线程调度并不受到Java虚拟机控制,因此由应用程序来控制它是更好的选择(也就是說不要让你的程序依赖于线程的优先级)。
10.在多线程中,什么是上下文切换(context-switching)?
上下文切换是存储和恢复CPU状态的過程,它使得线程执行可以從中断點恢复执行。上下文切换是多任务操作系统和多线程环境的基本特性。
11.你怎样保证main()措施所在的线程是Java程序最终結束的线程?
我們可以使用Thread类的joint()措施来保证所有程序创立的线程在main()措施退出前結束。這裏有一篇文章有关HYPERLINK"Thread类的joint()措施。
12.线程之间是怎样通信的?
當线程间是可以共享资源時,线程间通信
您可能关注的文档
- 2024年外科护理学题库.doc
- 2024年外科题库及答案.doc
- 2024年外贸跟单员考试全真模拟试题及答案.doc
- 2024年多媒体制作员四级复习题.doc
- 2024年多媒体技术与应用试题库完整.doc
- 2024年外科护理学试题库.doc
- 2024年多媒体大题复习真题.doc
- 2024年多边形知识点与练习.doc
- 2024年大唐集团招聘笔试试题及答案.doc
- 精选我为群众办实事工作汇报范文四篇 .pdf
- 精编贵州省贵阳市企业人力资源管理师之一级人力资源管理师考试精品(名师系列).docx
- 精编贵州省毕节地区企业人力资源管理师之四级人力资源管理师考试真题及答案【新】.docx
- 荷塘月色读书心得6篇_荷塘月色读后感 .pdf
- 网格化管理实施方案范文锦集9篇.pdf
- 精编贵州省黔西南布依族苗族自治州企业人力资源管理师之一级人力资源管理师考试题库附答案【实用】.docx
- 观看《我和我的父辈》个人心得体会2023 .pdf
- 精编贵州省黔南布依族苗族自治州企业人力资源管理师之四级人力资源管理师考试内部题库【真题汇编】.docx
- 精编贵州省黔东南苗族侗族自治州企业人力资源管理师之四级人力资源管理师考试通关秘籍题库附答案(能力提升.docx
- 职业健康安全生产工作讲话.pdf
- 精编贵州省遵义市企业人力资源管理师之四级人力资源管理师考试及参考答案(B卷).docx
文档评论(0)