[计算机软件及应用]java08-java高级编程2-多线程

[计算机软件及应用]java08-java高级编程2-多线程

ID:36322254

大小:360.50 KB

页数:48页

时间:2019-05-09

[计算机软件及应用]java08-java高级编程2-多线程_第1页
[计算机软件及应用]java08-java高级编程2-多线程_第2页
[计算机软件及应用]java08-java高级编程2-多线程_第3页
[计算机软件及应用]java08-java高级编程2-多线程_第4页
[计算机软件及应用]java08-java高级编程2-多线程_第5页
资源描述:

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

1、第9讲Java的多线程机制一、程序、进程与线程二、线程的状态三、线程优先级与调度四、多线程实现机制五、基本的线程控制多线程是指同时存在几个执行体,按几条不同的执行路线共同工作的情况。Java内置对多线程的支持。一、程序、进程与线程程序:一段静态的代码。进程:是程序的一次动态执行过程,包括从代码加载、执行到执行完毕的一个完整的产生、发展到消亡的过程。线程:是比进程更小的执行单位,一个进程在执行过程中,可以产生多个线程。即每个线程都是一个动态的产生、存在和消亡的过程。多线程的优势减轻编写交互频繁、涉及面多的程序的困难.程序的吞吐量会得到改善.有多个处理器的系统,可以并发运行不同的

2、线程.(否则,任何时刻只有一个线程在运行)线程与进程的区别多个进程的内部数据和状态都是完全独立的,而多线程是共享一块内存空间和一组系统资源,有可能互相影响.线程本身的数据通常只有寄存器数据,以及一个程序执行时使用的堆栈,所以线程的切换比进程切换的负担要小。多线程基本概念文件输入输出装置各种系统资源数据区段程序区段只有一个地方在执行文件输入输出装置各种系统资源数据区段程序区段同时有数个地方在执行传统的进程多线程的任务二、线程的状态stop()或run()结束NewThread创建状态NotRunnable不可运行状态Dead消亡状态newThread()yield()start

3、()stop()stop()Runnable运行状态sleep()suspend()wait()resume()notify()notifyAll()创建状态(newThread)由主线程创建线程对象ThreadmyThread=newMyThreadClass();可运行状态(Runnable)ThreadmyThread=newMyThreadClass();myThread.start();满足一定的调度条件时,进入Runnable状态。不可运行状态(NotRunnable)调用了sleep()方法;调用了suspend()方法;为等候一个条件变量,线程调用wait()

4、方法;输入输出流中发生线程阻塞;死亡状态(Dead)线程的终止一般可通过两种方法实现:自然撤消(线程执行完)或是被停止(调用stop()方法)。三、线程优先级与调度优先级:确保重要的或时间紧迫的线程即时运行方法。调度:强制优先与公平的方法。线程调度器:按照线程的优先级决定应调度哪些线程来执行,具有高优先级的线程会在较低优先级的线程之前得到执行。线程的调度是抢先式的,如果在当前线程的执行过程中,一个具有更高优先级的线程进入就绪状态,则这个高优先级的线程立即被调度执行。对优先级相同的线程来说,调度将采用轮转法。线程优先级与调度线程优先级用数字来表示,范围从1到10,即Thread

5、.MIN_PRIORITY到Thread.MAX_PRIORITY。一个线程的缺省优先级是5,即Thread.NORM_PRIORITY。我们可以通过下面方法获得或改变线程的优先级。intgetPriority();voidsetPriority(intnewPriority);四、多线程实现机制Java的线程:通过java.lang.Thread类来实现。每个线程都是通过某个特定Thread对象的方法run()来完成其操作的,方法run()称为线程体。构造线程体的2种方法:定义一个线程类,它继承类Thread并重写其中的方法run();提供一个实现接口Runnable的类作

6、为线程的目标对象,在初始化一个Thread类或者Thread子类的线程对象时,把目标对象传递给这个线程实例,由该目标对象提供线程体run()。创建多线程的方式1、Threadclass2、Runnableinterface1.publicclassmythreadextendsAppletimplementsRunnable(小应用或已经是某个类的子类时)2.继承类ThreadpublicclassmythreadextendsThread3.上述两种方法中都可用类Thread产生线程的对象Threadnewthread;4.创建并启动线程newthread=newThrea

7、d(this);newthread.start();5.run方法是运行线程的主体,启动线程时,由java直接调用publicvoidrun()6.停止线程,由小应用程序的stop调用线程的stopnewthread.stop()7sleep方法的作用,暂停线程的执行,让其它线程得到机会,sleep要丢出异常,必须抓住.Try{sleep(100)}catch(InterruptedExceptione){}例:小应用程序中不用Runnable接口仍然可以使用线程(不调用主类的方法和调用主类的方法)im

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

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

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