java多线程程序设计

java多线程程序设计

ID:32585413

大小:68.47 KB

页数:9页

时间:2019-02-13

java多线程程序设计_第1页
java多线程程序设计_第2页
java多线程程序设计_第3页
java多线程程序设计_第4页
java多线程程序设计_第5页
资源描述:

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

1、多线程程序设计:多线程技术主要包括多线程的概念、实现与控制以及互斥与同步这三个方血内容。1线程1.1线程的概念线程是程序屮一个单一的顺序控制流程,它是程序运行的基本执行单元。线程是比进程还小的单位。线程有它自己的入口和出口,以及一个顺序执行的序列。线程不能独立存在,必须存在于进程中。线程最大的一个特性是并发执行,多个并发执行的线程称为多线程。使用线程将会从以下5个方面來改善应用程序:(1)充分利用CPU资源。(2)简化编程模型(3)简化界步事件的处理⑷使GUI更有效率(5)节约成本1.2线程与进程・线程与进程的主要区别有:(1)线程的划分尺度小于进程;(2)进程在执行过程中拥有独立

2、的内存单元,而多个线程只能共享进程的内存单元。(3)在执行过程中,每个独立的线程有一个程序运行的入口、顺序执行序列和程序的出口。但是线程不能够独立执行,必须依存唉应用程序中,由应用程序提供多个线程执行控制。(4)从逻辑角度来看,多线程的意义在于一个应用程序中,有多个执行部分可以同时执行。但操作系统并没有将多个线程看做多个独立的应用,來实现进程的调度和管理以及资源分配。(5)—个线程可以创建和撤销另一个线程;同一个进程的多个线程Z间可以并发执行。2线程的生命周期一个线程从创建、启动到终止的整个过程程做一个生命周期。在此期间的任何时刻,总是处于下面5屮状态中的某一中状态。⑴创建状态。用

3、new运算符创建一个Thread类或子类的实例对象时,形成的新线程就进入创建状态,但此吋还未这个线程分配任何资源,没有真正执行它。⑵就绪状态。(3)运行状态(4)阻塞状态发生以下情况乙一,线程进入阻塞状态:•调用了该线程的sleep()休眠方法。•调用了wait()等待方法。•调用了suspend()挂起方法。・该线程正在等待I/O操作完成。⑸终止状态3Java多线程的实现方式Java中有两种方法实现多线程:一是通过Thread类的子类來实现,二是通过Runnable接口来实现c3.1继承Thread类Thread类综合了Java程序中一个线程需要拥有的属性和方法参考代码:publ

4、icclassThreaddemo_l{publicstaticvoidmain(String[]args)throws:EnterruptedException(HelloThreadht=newHelloThread("Hello");ht.start();//启动线程Thread.sleep((int)Muth.random()*100);//主线不呈休眠0~l00ms的随机数System.out.printIn("Java!”);}}classHelloThreadextendsThread{publicHelloThread(Strings){//构造方法super(s)

5、;//调用父类的构造方法,线程名为s}//必须覆盖Thread类的run()方法,线程启动后将执行该方法publicvoidrun(){System・out:・print(getName());//扌丁E卩线程名}}3.2实现Runnable接口通过实现Runnable接口來编写多线程程序,只需要重写run()方法,而且实现Runnable接口的类还可以继承其他类,在这一点上它与定义Thread类的子类实现多线程不同,也是它的优势所在。具体实现步骤如下:⑴定义一个实现Runnabl接口的类(2)定义方法run().Runnable接口中有一个空的方法run(),实现它的类必须覆盖此

6、方法。(3)创建该类的一个线程对象,并以该对象为参数,传递给Thread类的构造方法,从而生成Thread类的一个对彖。(4)通过start()方法启动线程。参考代码:publicclassRunnableDemo_l{publicstaticvoidmain(String[]args)throwsInterruptedException{RunThreadrt1=newRunThread();//定义RunThread对•彖rt1RunThreadrt2=newRunThread();//定义RunThread对象rt2//以实现Runnable接口的类对象为参数,定义Threa

7、d对象Threadtl=newThread(r七1,”线程1”);Threadt2=newThread(r线程2”);System,out.printIn(Hmain开始!H;tl.start();//启动线程1t2.start();//启动线程2System.out.printIn("main结束!”);}}classRunThreadimplementsRunnable{//必须覆盖Runnable接口的run()方法,线程启动后将执行该方法@Overridepu

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

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

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