- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Java多线程程序设计
多线程程序设计:
多线程技术主要包括多线程的概念、实现与控制以及互斥与同步这三个方面内容。
1 线程
1.1线程的概念
线程是程序中一个单一的顺序控制流程,它是程序运行的基本执行单元。线程是比进程还小的单位。线程有它自己的入口和出口,以及一个顺序执行的序列。线程不能独立存在,必须存在于进程中。
线程最大的一个特性是并发执行,多个并发执行的线程称为多线程。
使用线程将会从以下5个方面来改善应用程序:
(1)充分利用CPU资源。
(2)简化编程模型
(3)简化异步事件的处理
(4)使GUI更有效率
(5)节约成本
1.2 线程与进程
·线程与进程的主要区别有:
(1)线程的划分尺度小于进程;
(2)进程在执行过程中拥有独立的内存单元,而多个线程只能共享进程的内存单元。
(3)在执行过程中,每个独立的线程有一个程序运行的入口、顺序执行序列和程序的出口。但是线程不能够独立执行,必须依存唉应用程序中,由应用程序提供多个线程执行控制。
(4) 从逻辑角度来看,多线程的意义在于一个应用程序中,有多个执行部分可以同时执行。但操作系统并没有将多个线程看做多个独立的应用,来实现进程的调度和管理以及资源分配。
(5)一个线程可以创建和撤销另一个线程;同一个进程的多个线程之间可以并发执行。
2 线程的生命周期
一个线程从创建、启动到终止的整个过程程做一个生命周期。在此期间的任何时刻,总是处于下面5中状态中的某一中状态。
(1)创建状态。用new运算符创建一个Thread类或子类的实例对象时,形成的新线程就进入创建状态,但此时还未这个线程分配任何资源,没有真正执行它。
(2)就绪状态。
(3)运行状态
(4)阻塞状态 发生以下情况之一,线程进入阻塞状态:
·调用了该线程的sleep()休眠方法。
·调用了wait()等待方法。
·调用了suspend()挂起方法。
·该线程正在等待I/O操作完成。
(5)终止状态
3 Java多线程的实现方式
Java中有两种方法实现多线程:一是通过Thread类的子类来实现,二是通过Runnable接口来实现。
3.1 继承Thread类
Thread类综合了Java程序中一个线程需要拥有的属性和方法
参考代码:
public class Threaddemo_1 {
public static void main(String[] args) throws InterruptedException {
HelloThread ht = new HelloThread(Hello );
ht.start(); //启动线程
Thread.sleep((int)Math.random()*100);//主线程休眠0~100ms的随机数
System.out.println(Java!);
}
}
class HelloThread extends Thread{
public HelloThread(String s){ //构造方法
super(s); //调用父类的构造方法,线程名为s
}
//必须覆盖Thread类的run()方法,线程启动后将执行该方法
public void run(){
System.out.print(getName()); //打印线程名
}
}
3.2 实现Runnable接口
通过实现Runnable接口来编写多线程程序,只需要重写run()方法,而且实现Runnable接口的类还可以继承其他类,在这一点上它与定义Thread类的子类实现多线程不同,也是它的优势所在。具体实现步骤如下:
(1)定义一个实现Runnabl接口的类
(2)定义方法run().Runnable接口中有一个空的方法run(),实现它的类必须覆盖此方法。
(3)创建该类的一个线程对象,并以该对象为参数,传递给Thread类的构造方法,从而生成Thread类的一个对象。
(4)通过start()方法启动线程。
参考代码:
public class RunnableDemo_1 {
public static void main(String[] args) throws InterruptedException{
RunThread rt1 = new RunThread(); //定义RunThread对象rt1
RunThread rt2 = new RunThread(); //定义RunThread对象rt2
//以实现Runnable接口的类对象为参数,定义Thread对象
Thread t1 = new Thread(rt1,线程1);
Thread
您可能关注的文档
- 高二英语课标选修六 unit 2 Learning about language.ppt
- unit1-5翻译答案.docx
- The Famous Battles of World War Two二战中的重要战役.ppt
- 用MFC库函数AfxBeginThread来操作线程.docx
- translation答案全版.ppt
- 北京大学-樊纲发展经济学15.ppt
- Java基础第五次测验题.docx
- 数据库课程设计-银行储蓄系统完全代码.docx
- Java程序设计语言能力考试(试卷).docx
- 加拿大 thinkRF实时频谱分析仪-ThinkRF RTSA UG v1-3.pdf
- 卢家宏《我心永恒 - My Heart Will Go On》指弹吉他谱.pdf
- 如何argue拒信.docx
- 高考英语语法全突破-高中英语语法(简明语法)-英语语法大全-最简明英语语法-英语语法笔记-语法归纳总结.docx
- 社区交流网主页代码.docx
- 郑成河《MyHeartWillGoOn》指弹吉他谱.pdf
- 德语经典62句,让你明白你的人生.doc
- Charles Dickens狄更斯的英文介绍.docx
- WPM9435,willsemi低压MOS管.pdf
- unit 6 To work or not to work — That is the question sectiona.doc
- what_do_you_think_of_game_shows公开课.ppt
文档评论(0)