欢迎来到天天文库
浏览记录
ID:9886208
大小:952.01 KB
页数:62页
时间:2018-05-12
《uml与面向对象系统分析与设计与java11》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第九讲多线程多线程基本概念创建线程的方式线程的生命周期及控制线程的优先级及调度多线程的互斥与同步守护线程(Daemon)线程组(ThreadGroup)并发现象在现实生活中大量存在人体(消化、运动)计算机(同时运行多中程序)多线程——在一个程序中实现并发编程语言一般提供了串行程序设计的方法计算机的并发能力由操作系统提供Java在语言级提供多线程并发的概念1、多线程基本概念1、多线程基本概念以前所编写的程序,每个程序都有一个入口、一个出口以及一个顺序执行的序列,在程序执行过程中的任何指定时刻,都只有一个单独的执行点。事实
2、上,在单个程序内部是可以在同一时刻进行多种运算的,这就是所谓的多线程(这与多任务的概念有相似之处)。一个单独的线程和顺序程序相似,也有一个入口、一个出口以及一个顺序执行的序列,从概念上说,一个线程是一个程序内部的一个顺序控制流。线程并不是程序,它自己本身并不能运行,必须在程序中运行。在一个程序中可以实现多个线程,这些线程同时运行,完成不同的功能。将军令多线程1、多线程基本概念从逻辑的观点来看,多线程意味着一个程序的多行语句同时执行,但是多线程并不等于多次启动一个程序,操作系统也不会把每个线程当作独立的进程来对待:两者的
3、粒度不同,是两个不同层次上的概念。进程是由操作系统来管理的,而线程则是在一个程序(进程)内。不同进程的代码、内部数据和状态都是完全独立的,而一个程序内的多线程是共享同一块内存空间和同一组系统资源,有可能互相影响。线程本身的数据通常只有寄存器数据,以及一个程序执行时使用的堆栈,所以线程的切换比进程切换的负担要小。1、多线程基本概念进程:程序的一次执行。程序代码程序数据程序资源线程:进程中程序代码的一个执行序列。程序调用堆栈线程局部变量可共享访问进程中的数据和资源操作系统按线程来调度程序的执行1、多线程基本概念文件输入输出
4、装置各种系统资源数据区段程序区段只有一个地方在执行文件输入输出装置各种系统资源数据区段程序区段同时有数个地方在执行传统的进程多线程的任务1、多线程基本概念1、多线程基本概念多线程的优势:多线程编程简单,效率高(能直接共享数据和资源,多进程不能)适合于开发服务程序(如Web服务,聊天服务等)适合于开发有多种交互接口的程序(如聊天程序的客户端,网络下载工具)适合于有人机交互又有计算量的程序(如字处理程序Word,Excel)减轻编写交互频繁、涉及面多的程序的困难(如监听网络端口)程序的吞吐量会得到改善(同时监听多种设备,如
5、网络端口、串口、并口以及其他外设)有多个处理器的系统,可以并发运行不同的线程(否则,任何时刻只有一个线程在运行)1、多线程基本概念虽然各种操作系统(Unix/Linux、Windows系列等)都支持多线程,但若要用C、C++或其他语言编写多线程程序是十分困难的,因为它们对数据同步的支持不充分。对多线程的综合支持是Java语言的一个重要特色,它提供了Thread类来实现多线程。在Java中,线程可以认为是由三部分组成的:虚拟CPU,封装在java.lang.Thread类中,它控制着整个线程的运行;执行的代码,传递给Th
6、read类,由Thread类控制顺序执行;处理的数据,传递给Thread类,是在代码执行过程中所要处理的数据。2、创建线程的方式Java的线程是通过Java的软件包java.lang中定义的类Thread来实现的。当生成一个Thread类的对象之后,就产生了一个线程,通过该对象实例,可以启动线程、终止线程、或者暂时挂起线程等。2、创建线程的方式Thread类本身只是线程的虚拟CPU;线程所执行的代码(或者说线程所要完成的功能)是通过方法run()(包含在一个特定的对象中)来完成的,方法run()称为线程体。实现线程体的
7、特定对象是在初始化线程时传递给线程的。在一个线程被建立并初始化以后,Java的运行时系统就自动调用run()方法,正是通过run()方法才使得建立线程的目的得以实现。通常,run()方法是一个循环,例如一个播放动画的线程要循环显示一系列图片。有时,run()方法会执行一个时间较长的操作,例如下载并播放一个JPEG格式的电影。先来看看线程对象的初始化,类Thread的构造方法如下:publicThread(ThreadGroupgroup,Runnabletarget,Stringname)group指明了线程所属的线程
8、组;target是线程体run()方法所在的对象;name是线程的名称。target必须实现接口Runnable。在接口Runnable中只定义了一个方法voidrun()作为线程体。任何实现接口Runnable的对象都可以作为一个线程的目标对象。类Thread本身也实现了接口Runnable(空实现),因此,上述构造方法中各参数
此文档下载收益归作者所有