1 / 13
文档名称:

多线程面试题.docx

格式:docx   大小:32KB   页数:13页
下载后只包含 1 个 DOCX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

多线程面试题.docx

上传人:qiang19840906 2021/8/6 文件大小:32 KB

下载得到文件列表

多线程面试题.docx

文档介绍

文档介绍:线程 或者说多线程,是我们处理多任务的强大工具 。线程和进程是不同的,每个进程都是一个独立运行的程序 ,拥有自己的变量,且不同进程间的变量不能共享;而线程是运行在进程内部的,每个正在运行的进程至少有一个线程,而且不同的线程之间可以在进程范围内共享数据。也就是说进程有自己独立的存储空间,而线程是和它所属的进程内的其他线程共享一个存储空间。线程的使用可以使我们能够并行地处理一些事情。线程通过并行的处理给用户带来更好的使用体验,比如你使用的邮件系统 (outlook、Thunderbird、foxmail等),你当然不希望它们在收取新邮件的时候,导致你连已经收下来的邮件都无法阅读,而只能等待收取邮件操作执行完毕。这正是线程的意义所在。
实现线程的方式
实现线程的方式有两种:
继承java .,并重写它的run()方法,将线程的执行主体放入其中。
,实现它的run()方法,并将线程的执行主体放入其中。
这是继承Thread类实现线程的示例:
[java] view plaincopyprint?
public class ThreadTest extends Thread {<BR>public void run() {<BR>// 在这里编写线程执行的主体<BR>// do something<BR>}<BR>}  
这是实现Runnable接口实现多线程的示例:
[java] view plaincopyprint?
public class RunnableTest implements Runnable {<BR>public void run() {<BR>// 在这里编写线程执行的主体<BR>// do something<BR>}<BR>}  
这两种实现方式的区别并不大。继承Thread类的方式实现起来较为简单,但是继承它的类就不能再继承别的类了,因此也就不能继承别的类的有用的方法了。而使用是想Runnable接口的方式就不存在这个问题了,而且这种实现方式将线程主体和线程对象本身分离开来,逻辑上也较为清晰,所以推荐大家更多地采用这种方式。
如何启动线程
我们通过以上两种方式实现了一个线程之后,线程的实例并没有被创建,因此它们也并没有被运行。我们要启动一个线程,必须调用方法来启动它,这个方法就是Thread类的start()方法,而不是run()方法(既不是我们继承Thread类重写的run()方法,也不是实现Runnable接口的run()方法)。run()方法中包含的是线程的主体,也就是这个线程被启动后将要运行的代码,它跟线程的启动没有任何关系。上面两种实现线程的方式在启动时会有所不同。
继承Thread类的启动方式:
[java] view plaincopyprint?
public class ThreadStartTest {<BR>public static void main(String[] args) {<BR>// 创建一个线程实例<BR>ThreadTest tt = new ThreadTest();<BR>// 启动线程<BR>();<BR>}<BR>}  
实现Runnable接口的启动方式:
[java] view plaincopyprint?
public class RunnableStartTest {<BR>public static void main(String[] args) {<BR>// 创建一个线程实例<BR>Thread t = new Thread(new RunnableTest());<BR>// 启动线程<BR>();<BR>}<BR>}  
实际上这两种启动线程的方式原理是一样的。首先都是调用本地方法启动一个线程,其次是在这个线程里执行目标对象的run()方法。那么这个目标对象是什么呢?为了弄明白这个问题,我们来看看Thread类的run()方法的实现:
[java] view plaincopyprint?
public void run() {<BR>if (target != null) {<BR>();<BR>}<BR>}  
当我们采用实现Runnable接口的方式来实现线程的情况下,在调用new Thread(Runnable target)构造器时,将实现Runnable接口的类的实例设置 成了线程要执行的主体所属的目标对象target,当线程启动时,这个实例的run()方法就被执行了。当我们采用继承T

最近更新

办公家具定制与售后维护服务合同范本 3页

办公楼装修后保洁服务外包合同 3页

化妆品代理商合作协议书范本 3页

北京房屋租赁居间服务续约合同 3页

医疗机构医疗废物处理及回收定点采购合同 2页

单身公寓两室一厅租赁合同附智能家居安全监控.. 3页

厂房拆迁补偿与土地开发合作协议范本 3页

原料药购销与供应链金融合作合同 3页

变压器安装工程进度与质量保证协议 2页

商业地产租赁经营协议范本 3页

商场安防监控设备租赁服务合同 3页

2025年最新员工合同范文合集 8页

地下室设备安装与维护服务合同 3页

2025年最新初二朝花夕拾读书笔记 7页

地暖项目节能环保技术创新合作合同 3页

地磅采购及质量检测服务合同 3页

2025年最新体育特色课程实施方案 17页

2025年最新仓储租赁合同范本(精选篇) 51页

基础设施建设大额借款借条与工程进度合同 3页

2025年最新2025承包合同协议书五篇 15页

大型工程项目设备采购合同样本 3页

大毯塑料袋环保包装材料采购与应用合同 3页

大理石翻新及石材防护合作协议 3页

存量房买卖合同示范文本(特色版) 3页

安全员职业责任保险合同 3页

2025年暑假收获小学生五年级作文500字 4页

安置房买卖与配套设施安装及使用协议 3页

安防设备租赁合同书示例 3页

宠物医院除四害消杀服务承包合同 16页

家居地板翻新与保养合作协议 2页