欢迎来到天天文库
浏览记录
ID:43191725
大小:145.50 KB
页数:29页
时间:2019-10-02
《JAVA编程 第13章_多线程》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第13章多线程多线程是Java中的并发机制,表示能够在同一时间内同时执行多个操作。在日常生活中,边上网边听歌就是一个多线程。随着CPU进入双核,甚至多核时代,多线程的优势越来越明显。Java本身就是一门支持多线程的语言,在Java中使用多线程是很方便的,同样也是很高效的。通过本章的学习,读者应该能够完成如下几个目标。了解什么是多线程。熟练掌握如何定义和使用多线程。了解多线程的生命周期。掌握多线程的调用的几个情况。了解多线程的同步问题。13.1多线程简介多线程就好像日常生活中同时做几件事一样,例如早上起床,要烧水洗脸,在烧水时就可以刷牙,还可以边刷牙边看早间新闻,这样
2、就同时做着烧水、刷牙、看电视三件事。多线程也是一样的,在同一时刻有可能在执行多个线程,这样能够更好地提高办事效率。在实际开发中也是在很多地方使用多线程的,例如在很多网站中,当用户注册后,系统一方面会通知用户已经注册成功,一方面向用户在注册时填写的Email中发送邮件。这里就需要使用多线程,如果使用的是单线程,系统就会向用户注册的Email中发送邮件后才显示用户注册成功,由于发送邮件可能需要很长的时间,从而影响整个注册进度。在前面的学习中,虽然没有使用多线程,但是同样使用到了线程的知识。在每一个程序中的main方法就是一个线程,它一般被称为主线程。在主线程中可以启动多
3、个子线程来执行。13.2定义线程和创建线程对象在上一小节中讲解了什么是多线程,在本节中就来讲解怎样来定义线程和如何创建线程对象。定义线程有两种方法,一种是继承Thread类,一种是实现Runnable接口,这两种方法是存在各自优缺点的。和定义线程对应的就是创建线程对象,也是有两种方法。在本节中就来学习使用这两种方法来定义线程,以及相对应的创建线程对象。13.2.1继承Thread类定义线程定义一个线程可以通过继承Thread类来实现,这是一种相对简单的定义线程的方法。在Thread类中具有一个run方法,在定义的线程中需要重写这个方法。在重写的run方法中,可以定义
4、该线程所要执行的语句。当线程启动时,run方法中的程序就成为一条独立的执行线程。【范例】示例代码是一个通过继承Thread类定义线程的程序。示例代码01publicclassXianCheng1extendsThread02{03publicvoidrun()04{05System.out.println("通过继承Thread定义线程");06}07}该程序是无法运行的,因为没有main方法,也就是没有启动线程的方法。在该程序中创建了一个线程类继承于Thread类,并且在该类中重写了run方法,在其中定义了该线程的功能是显示一条语句。注意:重写的run方法也是可以
5、作为一般的方法来调用的,但是这种调用并不是作为一个线程出现的,它只是主线程中的一部分。同样,run方法也是可以被重载的,但是重载后的run方法不作为一个线程,也是主线程的一部分。讲解完定义线程后,就可以来学习如何创建线程对象。通过继承Thread类创建线程,是很容易创建线程对象的。在这种定义线程的方法中,创建线程对象和创建普通对象是一样的。下面是创建示例代码13-1中线程对象的代码。XianCheng1xc=newXianCheng1();从创建线程对象的程序可以看出,创建线程对象的方法和创建普通对象的方法是一样的。但是这只是对于使用继承Thread类创建线程的方法
6、来说的。13.2.2实现Runnable接口定义线程定义线程除了通过继承Thread类来实现,还可以通过实现Runnable接口来实现。在Runnable接口中具有一个抽象的run方法,在实现Runnable接口时,需要实现该run方法。该run方法就会作为一个执行线程的方法。【范例】示例代码是一个通过实现Runnable接口定义线程的程序。示例代码01publicclassXianCheng2implementsRunnable02{03publicvoidrun()04{05System.out.println("通过实现Runnable接口定义线程");06}
7、07}1是通过继承Thread类定义线程,2是通过实现Runnable接口来定义线程。这两种方法中都需要定义一个run方法,不管该方法是通过重写父类方法,还是实现接口方法。run方法是一个线程的入口,是线程必须具有的。在使用通过实现Runnable接口定义的线程中,要想创建线程对象就不是很容易做到的。因为直接创建类对象,创建的并不是一个线程对象。要想创建线程对象,必须要借助Thread类。Thread类具有4个构造器,最常用的就是具有一个参数,该参数是实现Runnable接口类对象的构造器。创建线程对象的程序如下所示。XianCheng2xc=newXianCh
此文档下载收益归作者所有