java多线程总结

java多线程总结

ID:21281715

大小:127.00 KB

页数:18页

时间:2018-10-20

java多线程总结_第1页
java多线程总结_第2页
java多线程总结_第3页
java多线程总结_第4页
java多线程总结_第5页
资源描述:

《java多线程总结》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、233Java多线程编程总结Java多线程编程总结Java语言的一个重要特点是内在支持多线程的程序设计。多线程是指在单个的程序内可以同时运行多个不同的线程完成不同的任务。多线程的程序设计具有广泛的应用。本章主要讲授线程的概念、如何创建多线程的程序、线程的生存周期与状态的改变、线程的同步与互斥等内容。9.1线程与线程类9.1.1线程的概念线程的概念来源于计算机的操作系统的进程的概念。进程是一个程序关于某个数据集的一次运行。也就是说,进程是运行中的程序,是程序的一次运行活动。线程和进程的相似之处在于,线程和

2、运行的程序都是单个顺序控制流。有些教材将线程称为轻量级进程(lightweightprocess)。线程被看作是轻量级进程是因为它运行在一个程序的上下文内,并利用分配给程序的资源和环境。作为单个顺序控制流,线程必须在运行的程序中得到自己运行的资源,如必须有自己的执行栈和程序计数器。线程内运行的代码只能在该上下文内。因此还有些教程将执行上下文(executioncontext)作为线程的同义词。所有的程序员都熟悉顺序程序的编写,如我们编写的名称排序和求素数的程序就是顺序程序。顺序程序都有开始、执行序列和结

3、束,在程序执行的任何时刻,只有一个执行点。线程(thread)则是进程中的一个单个的顺序控制流。单线程的概念很简单,如图9.1所示。多线程(multi-thread)是指在单个的程序内可以同时运行多个不同的线程完成不同的任务,图9.2说明了一个程序中同时有两个线程运行。一个线程两个线程图9.1单线程程序示意图图9.2多线程程序示意图有些程序中需要多个控制流并行执行。例如,233Java多线程编程总结for(inti=0;i<100;i++)System.out.println("RunnerA="+i)

4、;for(intj=0;j<100;j++)System.out.println("RunnerB="+j);上面的代码段中,在只支持单线程的语言中,前一个循环不执行完不可能执行第二个循环。要使两个循环同时执行,需要编写多线程的程序。很多应用程序是用多线程实现的,如HotJavaWeb浏览器就是多线程应用的例子。在HotJava浏览器中,你可以一边滚动屏幕,一边下载Applet或图像,可以同时播放动画和声音等。9.1.2Thread类和Runnable接口多线程是一个程序中可以有多段代码同时运行,那么这

5、些代码写在哪里,如何创建线程对象呢?首先,我们来看Java语言实现多线程编程的类和接口。在java.lang包中定义了Runnable接口和Thread类。Runnable接口中只定义了一个方法,它的格式为:·publicabstractvoidrun()这个方法要由实现了Runnable接口的类实现。Runnable对象称为可运行对象,一个线程的运行就是执行该对象的run()方法。Thread类实现了Runnable接口,因此Thread对象也是可运行对象。同时Thread类也是线程类,该类的构造方法

6、如下:·publicThread()·publicThread(Runnabletarget)·publicThread(Stringname)·publicThread(Runnabletarget,Stringname)·publicThread(ThreadGroupgroup,Runnabletarget)·publicThread(ThreadGroupgroup,Stringname)·publicThread(ThreadGroupgroup,Runnabletarget,Stringna

7、me)target为线程运行的目标对象,即线程调用start()方法启动后运行那个对象的run()方法,该对象的类型为Runnable,若没有指定目标对象,则以当前类对象为目标对象;name为线程名,group指定线程属于哪个线程组(有关线程组的概念请参考9.6节)。Thread类的常用方法有:·publicstaticThreadcurrentThread()返回当前正在执行的线程对象的引用。·publicvoidsetName(Stringname)设置线程名。·publicStringgetNam

8、e()返回线程名。·publicstaticvoidsleep(longmillis)throwsInterruptedException·publicstaticvoidsleep(longmillis,intnanos)throwsInterruptedException使当前正在执行的线程暂时停止执行指定的毫秒时间。指定时间过后,线程继续执行。该方法抛出InterruptedException异常,必须捕获。·publicvoidru

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

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

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