- 1、本文档共13页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
[java入门学习]第章多线程
第七章 多线程
7.1 多线程的概念
多线程编程的含义是可将程序任务分成几个并行的子任务。特别是在网络编程中,你会发现很多功能是可以并发执行的。比如网络传输速度较慢,用户输入速度较慢,你可以用两个独立的线程去完成这个功能,而不影响正常的显示或其他功能。多线程是与单线程比较而言的,普通的WINDOWS采用单线程程序结构,其工作原理是:主程序有一个消息循环,不断从消息队列中读入消息来决定下一步所要干的事情,一般是一个子函数,只有等这个子函数执行完返回后,主程序才能接收另外的消息来执行。比如子函数功能是在读一个网络数据,或读一个文件,只有等读完这数据或文件才能接收下一个消息。在执行这个子函数过程中你什么也不能干。但往往读网络数据和等待用户输入有很多时间处于等待状态,多线程利用这个特点将任务分成多个并发任务后,就可以解决这个问题。
7.1.1 Java线程的模型
Java的设计思想是建立在当前大多数操作系统都实现了线程调度。Java虚拟机的很多任务都依赖线程调度,而且所有的类库都是为多线程设计的。实时上,Java支持Macintosh和Ms-dos 的平台; 所以迟迟未出来就是因为这两个平台都不支持多线程。Java利用多线程实现了整个执行环境是异步的。
在Java程序里没有主消息循环。 如果一个线程等待读取网络数据,它可以运行但不停 止系统的其他线程执行。用于处理用户输入的线程大多时间是等待用户敲键盘或击鼠标。还可以使动画的每一帧时间停顿一秒而并不使系统暂停。 一个线程启动后,它可以被挂起, 暂时不让它执行。 挂起的线程可以重新恢复执行。任何时间线程都可以被停止,被停止的线程就不能再重新启动。
Java语言里,线程表现为线程类,线程类封装了所有需要的线程操作控制。必须很清晰 地区分开线程对象和运行线程,你可以将线程对象看作是运行线程的控制面板。在线程对象 里有很多函数来控制一个线程是否运行, 睡眠,挂起或停止。线程类是控制线程行为的唯一的手段。
一个Java程序启动后,就已经有一个线程在运行。你可通过调用Thread.currentThread 函数来查看当前运行的是哪一个线程。当得到一个线程的控制柄,就可以作一个很有趣的事情,即使单线程也一样。下面这个例子让你知道怎样操纵当前线程。
Filename:testthread
public class testthread {
public static void main(String[] args) {
Thread t =Thread.currentThread(); //调用Thread.currentThread 函数
t.setName(This Thread is running);
System.out.println(The running thread: + t);
try {
for (int i=0;i5;i++) {
System.out.println(Sleep time +i);
Thread.sleep(1000);
}
}
catch (InterruptedException e) {
System.out.println(thread has wrong);
}
}
}
执行结果:
java testthread
The running thread:Thread[This Thread is running,5,main]
Sleep time 0
Sleep time 1
Sleep time 2
Sleep time 3
Sleep time 4
7.1.2 启动接口
一个线程并不激动人心,多个线程才有实际意义。怎样创建更多的线程呢?我们需要创建线程类的另一个实例。当我们构造了线程类的一个新的实例,我们必须告诉它在新的线程里应执行哪一段程序。你可以在任意实现了启动接口的对象上启动一个线程。启动接口是一个抽象接口,来表示本对象有一个函数想异步执行。要实现启动接口,一个类只需要有一个叫run的函数。下面是创建一个新线程的例子:
Filename:twothread.java
public class twothread implements Runnable {
public twothread() {
Thread t1 =Thread.currentThread();
t1.setName(The first main thread);
System.out.println(The running thread: + t1);
Thread t2 = new Thread(this,the second thread); //创建了一个Thread对象
System.out.printl
您可能关注的文档
- WT电话录音系统软件介绍.doc
- WXBA馈线技术说明书V.doc
- wxl化工原理课程设计.doc
- WXJB型微机小电流系统接地选线装置说明书.doc
- XA控制部分的数控化改造.doc
- XLNG气化站方案.doc
- XMQY维修工时定额.doc
- XMP段PID调节器.doc
- XKSXC型电气自动化实训台指导书综合篇.doc
- Xwgdha武汉大学经济管理学院考博参考书.doc
- 商务秘书实务(第四版)Chapter 26 PPT课件_.pptx
- 2025年新能源汽车充电设施互联互通技术标准与充电桩互联互通产业政策解读报告.docx
- 2025年食品加工行业智能化生产线智能化改造成本效益分析报告.docx
- 2025年材料基因组学在航空航天复合材料抗冲击性能提升中的应用研究.docx
- 2025年城市交通智能化升级:自行车与步行交通系统应用前景分析报告.docx
- 农村电商农村电商产业链协同发展报告:2025年现状与模式创新思考.docx
- 农村电商农村电商农产品上行政策分析分析分析分析2025年现状与模式创新报告.docx
- 农村电商农村电商与农村社会保障报告:2025年创新模式与保障体系.docx
- 金融数据治理与资产化在金融科技创业中的应用策略报告.docx
- 2025年智能家居家居护理消费市场研究报告.docx
文档评论(0)