[计算机软件及应用]多线程程序设计

[计算机软件及应用]多线程程序设计

ID:40005110

大小:571.50 KB

页数:59页

时间:2019-07-17

[计算机软件及应用]多线程程序设计_第1页
[计算机软件及应用]多线程程序设计_第2页
[计算机软件及应用]多线程程序设计_第3页
[计算机软件及应用]多线程程序设计_第4页
[计算机软件及应用]多线程程序设计_第5页
资源描述:

《[计算机软件及应用]多线程程序设计》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、java多线程程序设计shenxueping@buaa.edu.cn1XuepingShen想象一下,如果我们想要从Internet上下载一段很长的视频或者音频片段,如果我们可以把下载任务放在一个独立的线程里实现,我们在下载开始之后很快就可以观看这个片段了,而不是必须等全部下载完成才可以观看。此外,多线程的执行还可以允许许多用户同时访问一个公共的数据库,这个特性对于类似库存管理和机票预定这样的系统有时候显得非常有用。为了防止由于多个用户同时读取和写入公共数据库而造成的数据破坏,多线程还需要在对象上设置锁。这样一个时刻只有一个线程能够修改一个对象的状态。2Xue

2、pingShen如何实践对正在下载的视频进行同时观看;机票预订;并发的处理。3XuepingShen主要知识点线程的概念线程的调度创建和启动线程Thread线程类、Runnable接口多个线程的同步线程之间的通信4XuepingShen多线程程序:是一段静态的代码,它是应用程序执行的蓝本。进程:是程序的一次动态执行过程,它对应了从代码加载、执行到执行完毕的一个完整过程,也是进程本身从产生、发展至消亡的过程。目前所流行的操作系统中,大部分都是支持多任务的(如Windows3.X,WindowsNT,Windows95,OS/2及UNIX的各个版本),这实际就是一

3、种多进程的概念——每一个任务就是一个进程。线程:比进程更小的执行单位。一个进程在执行过程中,为了同时完成多项操作,可以产生多个线程,形成多条执行线索。每个线程都有它自身的产生、存在和消亡的过程。5XuepingShen线程和进程之间的关系:多进程环境中每一个进程既包括其所要执行的指令,也包括执行指令所需的任何系统资源,如CPU、内存空间、I/O端口等,不同进程所占用的系统资源相对独立;线程是比进程单位更小的执行单位,多线程环境中每一个线程都隶属于某一进程,由进程触发执行,在系统资源的使用上,属于同一进程的所有线程共享该进程的系统资源;与进程不同的是线程本身即没

4、有入口,也没有出口,其自身也不能独立运行,它栖身于某个进程之中,由进程启动运行,完成其任务后,自动终止,也可以由进程使之强制终止。6XuepingShen多线程程序设计:是指单个程序包含并发执行的多个线程。当多线程程序执行时,该程序对应的进程中就有多个控制流在同时执行,即具有并发执行的多个线程;例如:PV操作WebServer接受客户端的请求问题银行问题网络聊天(一对多)程序7XuepingShen一个多线程的例子:Test.java此程序创建两个线程,分别执行存取款操作,并规定每次存款25000元,每次取款50000元。8XuepingShen进程、线程示意

5、图9XuepingShen为什么要使用多线程?由于线程在程序内部,多个线程共享一些系统的开销,而线程本身的数据通常只有微处理器的寄存器数据,以及一个供程序执行时使用的堆栈。例如线程之间共享相同的内存单元(代码和数据),因此在线程间切换,不需要很大的系统开销,所以线程之间的切换速度远远比进程之间快,线程之间的通信也比进程通信快的多。多个线程轮流抢占CPU资源而运行时,从微观上讲,一个时间里只能有一个作业被执行,在宏观上可使多个作业被同时执行,即等同于要让多台计算机同时工作,使系统资源特别是CPU的利用率得到提高,从而可以提高整个程序的执行效率。10Xueping

6、Shen线程运行环境VirtualCPUCodeDataThreadtxyzrclassxyz线程11XuepingShen每一个进程就是一个应用程序。有自己的入口和出口。多进程环境中每一个进程既包括其所要执行的指令,也包括了执行指令所需的任何系统资源,如CPU、内存空间、I/O端口等;不同进程所占用的系统资源相对独立。多个线程可共同存在于一个应用程序中。多线程环境中每一个线程都隶属于某一进程,由进程触发执行(没有自己的入口和出口);在系统资源的使用上,属于同一进程的所有线程共享该进程的系统资源。线程之间切换的速度比进程切换要快得多。进程和线程的比较(总结)1

7、2XuepingShen线程的调度(1)微观上,在一台只具有一个CPU的机器上,CPU在同一时间只能分配给一个线程做一件事。当有多于一个的线程工作时,在Java中,线程调度通常是抢占式(即哪一个线程先抢到CPU资源则先运行),而不是分时间片式。一旦一个线程获得执行权,这个线程将持续运行下去,直到它运行结束或因为某种原因而阻塞,或者有另一个高优先级线程就绪(这种情况称为低优先级线程被高优先级线程所抢占)。13XuepingShen线程的调度(2)所有被阻塞的线程按次序排列,组成一个阻塞队列。例如:因为需要等待一个较慢的外部设备,例如磁盘或用户。让处于运行状态的线

8、程调用Thread.sleep()方法

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。