JAVA开发葵花宝典 (2).ppt

上传人:小飞机 文档编号:6509800 上传时间:2023-11-07 格式:PPT 页数:22 大小:248KB
返回 下载 相关 举报
JAVA开发葵花宝典 (2).ppt_第1页
第1页 / 共22页
JAVA开发葵花宝典 (2).ppt_第2页
第2页 / 共22页
JAVA开发葵花宝典 (2).ppt_第3页
第3页 / 共22页
JAVA开发葵花宝典 (2).ppt_第4页
第4页 / 共22页
JAVA开发葵花宝典 (2).ppt_第5页
第5页 / 共22页
点击查看更多>>
资源描述

《JAVA开发葵花宝典 (2).ppt》由会员分享,可在线阅读,更多相关《JAVA开发葵花宝典 (2).ppt(22页珍藏版)》请在三一办公上搜索。

1、第13章 线程,线程是什么?线程有什么作用?线程具备提高执行速度的特点,在应用程序中使用非常广泛,例如现实生活中的网络聊天功能。本章将讲述线程的基本概念,学习如何使用线程进行程序代码的编写。,13.1 线程的概念,在讲述线程的概念之前,会先介绍什么是进程。这两个概念仅仅只有一字之差,但代表的是两个完全不同的概念。线程也是网络编程必须具备的知识点。,13.1.1 进程及其使用环境,在讲进程之前,先介绍什么是程序。程序是计算机指令的集合,它以文件形式存储在磁盘上,而进程就是一个执行中的程序,而每一个进程都有其独立的内存空间和系统资源。(具体内容请参照本书),13.1.2 线程及其使用环境,线程是运

2、行程序(进程)中单个顺序的小程序,一个进程可以由多个线程组成,而这多个线程共享同一个存储空间,这使得线程间的通信比较容易。在一个多进程的程序中,如果要切换到另一个进程,需要改变地址空间的位置。然而在多线程的程序中,就不会出现这种情况,因为他们位于同一个内存空间内,只需改变运行的顺序即可。(具体内容请参照本书),13.2 线程创建,在Java程序语言中,可通过系统提供的编程接口去创建线程,创建线程的方法有两种:一种是通过实现Runnable接口的方式来创建线程,另一种是通过继承Thread类来创建线程。,13.2.1 如何创建线程,创建线程的方法一般有两种:1通过Runnable接口的方式创建线

3、程2通过继承Thread类来创建线程:,13.2.2 通过实例熟悉如何创建线程,下面通过一个综合实例,来看看如何创建线程。针对下面的实例,先来看看它的流程,如图13.1所示。(具体内容请参照本书),13.3 线程的使用,前面介绍了如何创建线程,但从上面的实例可以看到,其输出结果不尽人意,为什么呢?因为在线程的应用中存在很多新的知识点,需要大家去学习,本节将会逐个进行解释。,13.3.1 线程的优先级,线程的执行是一种抢占方式,优先级高的比优先级低的要获得更多的执行时间,如果想让一个线程比其他线程有更多的时间运行,可以通过设置线程的优先级解决。如一个线程创建后,可通过在线程中调用“set Pri

4、ority()”方法,来设置其优先级,具体方法如下:(具体内容请参照本书),13.3.2 线程的休眠与唤醒,上面的程序段还是没有达到最终想要得到的输出结果。这里涉及到线程的休眠和唤醒功能,那什么是线程的休眠和唤醒呢?下面将分别来讲述。(具体内容请参照本书)1线程的休眠2线程的唤醒,13.3.3 线程让步,所谓线程让步,就是使当前正在运行的线程对象退出运行状态,让其他线程运行,其方法是通过调用yield()来实现。这个方法不能将运行权让给指定的线程,只是允许这个线程把运行权让出来,至于给谁,这就是抢占功能的事情了。(具体内容请参照本书),13.3.4 线程同步,本节将详细的讲述为什么要使用线程同

5、步,并且通过现实生活中程序开发的实例,来说明线程同步的用法。前面讲述过,线程的运行权通过一种叫抢占的方式获得。一个程序运行到一半时,突然被另一个线程抢占了运行权,此时这个线程数据处理了一半,而另一个线程也在处理这个数据,那么会出现重复操作数据的现象,最终整个系统将会混乱。下面先看一个实例,通过这个实例,了解如果线程不是同步的,将会出现什么样的结果。(具体内容请参照本书),13.3.5 同步块,同步块是使具有某个对象监视点的线程,获得运行权限的一种方法,每个对象只能在拥有这个监视点的情况下,才能获得运行权限。举个例子,一个圆桌,有4个人吃饭,但是只有一个勺子,4人中只有一个人能吃饭,并且这个人必

6、须是拥有勺子的人,而这个勺子就相当于同步块中的监视点。(具体内容请参照本书),13.3.6 同步化方法,同步方法就是对整个方法进行同步。它的结构是:synchronized void f()代码下面使用同步方法来修改上面的程序段。(具体内容请参照本书),13.4 实例分析,本节将分析线程的一些比较实用的实例,通过这些实例和流程图,希望读者能够掌握线程的精髓。,13.4.1 生产者与消费者的模拟程序设计及分析,下面将使用生产者和消费者的模拟程序来编写代码,其条件是:(具体内容请参照本书),13.4.2 多消费者的模拟程序设计及分析,本节将接着上面的实例,再增加条件:增加一个营业员。即现在是两个营

7、业员在销售汉堡,而一个厨师在作汉堡。先来看看程序的流程,如图13.3所示。(具体内容请参照本书),13.4.3 多生产者的模拟程序设计及分析,本节的实例将让条件变的更加复杂,设计了两个厨师和两个营业员,针对这种复杂的现象,先来看看程序的流程,如图13.4所示。(具体内容请参照本书),13.5 常见疑难解答,(具体内容请参照本书),13.5.1.Java中线程与线程之间怎么通信,答:共享一个变量,并对此变量的访问进行同步,因为他们共享一个内存空间,所以相比之下,它比进程之间通信要简单容易的多。,13.5.2 什么是进程的死锁和饥饿,进程的死锁和饥饿在本章中没有讲述,主要是考虑到它涉及的线程知识会比较复杂,此处将给大家简单的介绍下它们的基本概念,有兴趣的读者可以自行查阅其他资料。什么是饥饿?饥饿是由于别的并发进程的激活,而导致持久占有所需资源。饥饿是个异步过程,预测的时间内不能被激活,最常遇到的线程的两个缺陷是死锁和饥饿。(具体内容请参照本书),13.5.3 什么时候会涉及到线程程序,答:在说明这个问题之前,先举一个例子,一个厨师既要炒菜,又要切菜。两个动作是间断性的进行,即一会要炒菜,一会儿要切菜,此时要编写程序,就要使用线程。(具体内容请参照本书),

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号