java多线程与进程调度

java多线程与进程调度

ID:30305847

大小:35.88 KB

页数:11页

时间:2018-12-28

java多线程与进程调度_第1页
java多线程与进程调度_第2页
java多线程与进程调度_第3页
java多线程与进程调度_第4页
java多线程与进程调度_第5页
资源描述:

《java多线程与进程调度》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、Java 多线程与异常处理 (2009-02-1615:18:50)转载标签: it分类: JavaJava有两个机制:多线程(Multithread)和异常处理(Exception)。本章前半部分是关于Thread这一基本类以及一套先进的同步原语的介绍,它们使得利用Java编写多线程大为方便。在本章的后半部分我们将介绍Java的异常处理机制(Exception),异常处理机制提高了程序的健壮性。另外,本章中间将介绍一个Java的debugger工具Jdb的使用,Jdb工具对于调试多线程程序尤其有好处。  5.1多线程(Multithr

2、ead)  5.1.1线程的基本概念  在介绍多线程之前,我们先来了解一些相关的基本概念。一般来说,我们把程序的一次执行称为进程(process)。一个进程包括一个程序模块和该模块一次执行时所处理的数据。每个进程与其它进程拥有不同的数据块,其内存地址是分开的。进程之间的通信要通过寻址,一般需使用信号、管道等进行通信。线程(thread)是指进程内部一段可独立执行的有独立控制流的指令序列。子线程与其父线程共享一个地址空间,同一个任务中的不同线程共享任务的各项资源。  多进程与多线程是多任务的两种类型。以前的操作系统,如Win31,只运行多

3、进程,而Win95及WinNT则支持多线程与多进程。Java通过提供Package类(Java.lang.package)支持多进程,而提供Thread类来支持多线程。  多线程与多进程的主要区别在于,线程是一个进程中一段独立的控制流,一个进程可以拥有若干个线程。在多进程设计中各个进程之间的数据块是相互独立的,一般彼此不影响,要通过信号、管道等进行交流。而在多线程设计中,各个线程不一定独立,同一任务中的各个线程共享程序段、数据段等资源,如图5.1。  正如字面上所表述的那样,多线程就是同时有多个线程在执行。在多CPU的计算机中,多线程的

4、实现是真正的物理上的同时执行。而对于单CPU的计算机而言,实现的只是逻辑上的同时执行。在每个时刻,真正执行的只有一个线程,由操作系统进行线程管理调度,但由于CPU的速度很快,让人感到像是多个线程在同时执行。  多线程比多进程更方便于共享资源,而Java又提供了一套先进的同步原语解决线程之间的同步问题,使得多线程设计更易发挥作用。用Java设计动画以及设计多媒体应用实例时会广泛地使用到多线程,在后面几章你将看到多线程的巨大作用,当然,现在必须先学习一些多线程的基本知识,慢慢地你就体会到它的优越性。  5.1.2线程的状态  如同进程有等待

5、、运行、就绪等状态一样,线程也有其状态。  当一个线程通过new被创建但还未运行时,称此线程处于准备状态(new状态)。当线程调用了start()方法或执行run()方法后,则线程处于可运行状态。若在等待与其它线程共享资源,则称线程处于等待状态。线程的另一个状态称为不可运行(notrunnable)状态,此时线程不仅等分享处理器资源,而且在等待某个能使它返回可运行状态的事件,例如被方法suspend()挂起的进程就要等待方法resume()方可被唤醒。当调用了stop()方法或线程执行完毕,则线程进入死亡(dead)状态。线程的各个状态

6、之间的转换关系见图5.2。  5.1.3创建线程  在了解基本概念后,下面学习如何在Java中创建多线程。  Java通过java.lang.Thread类来支持多线程。在Thread类中封装了独立的有关线程执行的数据和方法,并将多线程与面向对象的结构合为一体。  Java提供了两种方法创建线程,一种是继承Thread类,另一种则是实现接口Runnable。  1.继承Thread类  通过继承Thread类创建线程十分简单,只需要重载run()方法提供执行入口就可以,下面我们通过例5.1来解释说明。  例5.1ThreadTest1.

7、java。1.importjava.lang.Thread;2.importjava.lang.System;3.importjava.lang.Math;1.importjava.lang.InterruptedException;2. 3.classThreadTest1{4.publicstaticvoidmain(Stringargs[])5.  throwsjava.io.IOException{6.  System.out.println("Ifwanttoshowtheresult,pressreturn");7.  My

8、Threadthread1=newMyThread("thread1");8.  MyThreadthread1=newMyThread("thread2");//创建了两个线程thread1和thread

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

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

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