资源预览内容
第1页 / 共13页
第2页 / 共13页
第3页 / 共13页
第4页 / 共13页
第5页 / 共13页
第6页 / 共13页
第7页 / 共13页
第8页 / 共13页
第9页 / 共13页
第10页 / 共13页
亲,该文档总共13页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第11讲:多线程编程(1),内容提要,基本概念创建线程线程的生命周期前台线程与后台线程线程的分支与合并,基本概念,程序进程线程多线程,创建线程,创建线程有两种方式:通过继承Thread类通过实现Runnable接口,创建线程继承Thread类,例程通过上面的例子,可以总结出该种方式的多线程编程的要点:(1)首先创建线程类(通过继承Thread类并覆盖run()方法);(2)其次启动线程(通过创建自定义线程类对象并调用其继承的start()方法)。初学者易犯的错误是:认为线程的启动执行只与run()方法有关,故第1518行代码可以与下面的代码等价。30 ThreadTest t1 = new ThreadTest(); 31 t1.start(); /启动了一个线程 32 t1.start(); /又启动了一个新的线程,创建线程实现Runnable接口,例程通过该例程,可以总结出该种方式的多线程编程的要点:(1)首先创建线程类(通过实现Runnable接口的run()方法);(2)其次启动线程(通过创建自定义类对象,再使用该对象创建Thread类对象并调用其start()方法)。,两种创建线程方式的比较,两种线程创建方式中都有一个run()方法,这让我们猜测Thread和Runnable之间应该有关系,查阅JDK API发现Thread类的声明为:public class Thread implements Runnable,这与使用第二种方式创建线程很类似,实际上不仅是类似,而且就是如此。第一种方式采用继承,但Java只允许单继承,故这样的自定义线程类就不能再继承其他的类了,这是一个缺陷,所以建议采用第二种方式来创建线程,线程的生命周期,前台线程与后台线程,Java 有两种线程:后台线程(也称为守护线程、精灵线程)与前台线程(也称为用户线程)。6.2节中的例程都是前台线程,后台线程是一种在后台为前台线程提供通用性支持的线程,它并不是程序本身的一部分。这个模型也是来源于物理世界,例如演戏就有前台和后台,演员在前台上演戏,整个过程离不开后台的支持和服务。,Thread类中的setDaemon(boolean on)方法用于设置线程的前台/后台模式:当参数on的值为true时,当前线程就设置为后台模式,为false则为前台模式。,线程的分支与合并,通过分支,线程由一个变成多个,从而产生并行处理,使用6.2节介绍的创建线程的两种方式中的任意一种都能实现线程的分支。这是说在一个线程中创建另一个线程的情况,如果在main()方法中创建一个线程是不是就只有一个线程了?需要记住的是,Java进程都是多线程的,在启动一个Java应用时,就自动产生了一个线程(称为主线程或main线程),这个线程的运行方法就是我们再熟悉不过的main()方法,main()方法相当于普通线程中的run()方法。而线程的合并恰恰相反,把一个线程合并到另一个线程中,由并行处理转为顺序处理。例程,小结,基本概念创建线程线程的生命周期前台线程与后台线程线程的分支与合并,作业,习题 6:1-6,
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号