《java 2面向对象程序设计基础》线程ppt

《java 2面向对象程序设计基础》线程ppt

ID:40010898

大小:702.00 KB

页数:72页

时间:2019-07-17

《java 2面向对象程序设计基础》线程ppt_第1页
《java 2面向对象程序设计基础》线程ppt_第2页
《java 2面向对象程序设计基础》线程ppt_第3页
《java 2面向对象程序设计基础》线程ppt_第4页
《java 2面向对象程序设计基础》线程ppt_第5页
资源描述:

《《java 2面向对象程序设计基础》线程ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第6章线程(时间:3次课,6学时)第6章线程教学提示:计算机世界要想真正地反映现实世界,必须解决事情的同步问题,即解决程序实现多线程的问题。因此可编写有几条执行路径的程序,使得程序能够同时执行多个任务,借此实现多线程运行。Java语言的一大特点就是内置对多线程的支持。本章主要介绍:Java中的线程作用机制、线程的实现方法、线程的控制和线程的同步与死锁。第6章线程6.1线程简介6.2线程的实现方法6.3线程的控制6.4Java的多线程实例6.5线程的同步与死锁6.6ThreadLocal问题6.7课后练习6.1线程简介6.1.1程序、进程

2、和线程6.1.2线程的生命周期6.1.3线程的优先级及其调度6.1.4线程组6.1线程简介对于许多编程人员来说,线程并不是那么的陌生。但是在Java中,线程的作用机制又是如何工作的呢?本节将重点介绍Java中的线程作用机制。6.1.1程序、进程和线程程序是由若干条语句组成的语句序列,是一段静态代码。进程是程序的一次动态执行过程。需要特别指出的是,进程不仅包括程序代码,还包括系统资源。即一个进程既包括其所要执行的指令,也包括执行指令所需的任何系统资源,如CPU、内存空间等。不同进程所占用的系统资源相对独立。6.1.1程序、进程和线程线程又

3、是一个抽象的概念,它包含了一个计算机执行传统程序时所做的每一件事情。线程是一种在CPU上调度的程序状态,它在某一瞬时看来只是计算过程的一个状态。一个进程中的所有线程共享该进程的状态,它们存储在相同的内存空间中,共享程序的代码和数据。所以当其中一个线程改变了进程的变量时,那么其他线程下次访的将是改变后的变量。多线程是指同一个应用程序中有多个顺序流同时执行。在一个程序中可以同时运行多个不同的线程来执行不同的任务,各个线程并行地完成各自的任务。浏览器就是一个典型的多线程例子。6.1.2线程的生命周期每个Java程序都有一个默认的主线程。对于应

4、用程序,主线程是main()方法执行的路径。图6-1说明线程的生命周期及其状态转换。6.1.2线程的生命周期图6-1线程的状态转换6.1.2线程的生命周期从图6-1中可以看出:一个线程从创建到消亡的整个生命周期中,总是处于下面5个状态中的某个状态。1.新建状态通过new命令创建一个Thread类或其子类的线程对象时,该线程对象处于新建状态。创建一个新的线程对象可以用下面的语句实现:Threadthread=newThread();该语句是最简单的创建线程的语句,但该语句创建的线程是一个空的线程对象,系统还未对这个线程分配任何资源。6.1

5、.2线程的生命周期2.就绪状态该状态又可称为可运行状态。处于新建状态的线程可通过调用start()方法启动该线程。Start()方法产生了线程运行需要的系统资源。启动后的线程将进入线程就绪队列排队等待CPU服务,此时线程已经具备了运行的条件,一旦它获得CPU等资源时就可以脱离创建它的主线程而独立运行。6.1.2线程的生命周期3.运行状态当处于就绪状态的线程被调度并获得CPU资源时,使进入运行状态。每个线程对象都有一个重要的run()方法,run()方法定义了该线程的操作和功能。当线程对象被调度执行时,它将自动调用其run()方法并从第一

6、条语句开始顺次执行。6.1.2线程的生命周期4.阻塞状态又称不可运行状态。当发生下列情况之一时,线程就进入阻塞状态。(1)等待输入输出操作完成。(2)线程调用wait()方法等待一个条件变量。(3)调用了该线程的sleep()休眠方法。(4)调用了suspend()挂起方法。6.1.2线程的生命周期5.消亡状态消亡状态又称死亡状态,当调用run()方法结束后,线程就进入消亡状态,这是线程的正常消亡。另外线程还可能被提前强制性消亡。不管何种情况,处于消亡状态的线程不具有继续运行的能力。6.1.3线程的优先级及其调度线程被创建之后,每个Ja

7、va线程的优先级都在Thread.MIN_PRIORITY(常量1)和Thread.MAX_PRIORITY(常量10)的范围之内。每个新建线程的默认优先级都为Thread.NORM_PRIORITY(常量5)。可以用方法intgetPriority()来获得线程的优先级,同时也可以用方法voidsetPriority(intp)在线程被创建后改变线程的优先级。一个线程将始终保持运行状态,直到出现下列情况:由于I/O(或其他一些原因)而使该线程阻塞;调用sleep、wait、join或yield方法也将阻塞该线程;更高优先级的线程将抢占

8、该线程;时间片的时间期满而退出运行状态或线程执行结束。6.1.3线程的优先级及其调度【例6.3】综合使用线程的方法来控制线程的工作举例,程序如下。//一个实现Runnable接口的SimpleRunnabl

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

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

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