- 2
- 0
- 约9.6千字
- 约 13页
- 2017-06-07 发布于湖北
- 举报
实验10:java 多线程
姓名 院系 学号 任课教师 指导教师 实验地点 实验时间 实验课表现 出勤、表现得分10% 实验报告
得分40% 实验总分 操作结果得分50% 实验目的: 了解进程和线程的区别
掌握java多线程的两种实现方式及区别
了解线程的状态变化
了解线程的主要操作方法
了解同步死锁的概念
了解线程的生命周期 实验准备: 一、理解多线程 多线程是这样一种机制,它允许在程序中并发执行多个指令流,每个指令流都称为一个线程,彼此间互相独立。 线程又称为轻量级进程,它和进程一样拥有独立的执行控制,由操作系统负责调度,区别在于线程没有独立的存储空间,而是和所属进程中的其它线程共享一个存储空间,这使得线程间的通信远较进程简单。 多个线程的执行是并发的,也就是在逻辑上 “ 同时 ” ,而不管是否是物理上的 “ 同时 ” 。如果系统只有一个 CPU ,那么真正的 “ 同时 ” 是不可能的,但是由于 CPU 的速度非常快,用户感觉不到其中的区别,因此我们也不用关心它,只需要设想各个线程是同时执行即可。 多线程和传统的单线程在程序设计上最大的区别在于,由于各个线程的控制流彼此独立,使得各个线程之间的代码是乱序执行的,由此带来的线程调度,同步等问题,将在以后探讨。 二、在 Java 中实现多线程 我们不妨设想,为了创建一个新的线程,我们需要做些什么?很显然,我们必须指明这个线程所要执行的代码,而这就是在 Java 中实现多线程我们所需要做的一切! 真是神奇! Java 是如何做到这一点的?通过类!作为一个完全面向对象的语言, Java 提供了类 java.lang.Thread 来方便多线程编程,这个类提供了大量的方法来方便我们控制自己的各个线程,我们以后的讨论都将围绕这个类进行。 那么如何提供给 Java 我们要线程执行的代码呢?让我们来看一看 Thread 类。 Thread 类最重要的方法是 run() ,它为 Thread 类的方法 start() 所调用,提供我们的线程所要执行的代码。为了指定我们自己的代码,只需要覆盖它! 方法一:继承 Thread 类,覆盖方法 run() ,我们在创建的 Thread 类的子类中重写 run() , 加入线程所要执行的代码即可。 下面是一个例子: public class MyThread extends Thread { int count= 1, number; public MyThread(int num) { number = num; System.out.println ( 创建线程 + number); } public void run() { while(true) { System.out.println ( 线程 + number + : 计数 + count); if(++count== 6) return; } } public static void main(String args[]) { for(int i = 0; i 〈 5; i++) new MyThread(i+1).start(); } } 这种方法简单明了,符合大家的习惯,但是,它也有一个很大的缺点,那就是如果我们的类已经从一个类继承(如小程序必须继承自 Applet 类),则无法再继承 Thread 类,这时如果我们又不想建立一个新的类,应该怎么办呢? 我们不妨来探索一种新的方法:我们不创建 Thread 类的子类,而是直接使用它,那么我们只能将我们的方法作为参数传递给 Thread 类的实例,有点类似回调函数。但是 Java 没有指针,我们只能传递一个包含这个方法的类的实例。 那么如何限制这个类必须包含这一方法呢?当然是使用接口!(虽然抽象类也可满足,但是需要继承,而我们之所以要采用这种新方法,不就是为了避免继承带来的限制吗?) Java 提供了接口 java.lang.Runnable 来支持这种方法。
? 方法二:实现 Runnable 接口 Runnable 接口只有一个方法 run() ,我们声明自己的类实现 Runnable 接 口并提供这一方法,将我们的线程代码写入其中,就完成了这一部分的任务。但是 Runnable 接口并没有任何对线程的支持,我们还必须创建 Thread 类 的实例,这一点通过 Thread 类的构造函数 public T
您可能关注的文档
- 第八讲 数据资料.ppt
- 第八讲 CDMA移动通信系统(一).ppt
- IPv6终端技术及产品现状.ppt
- 第八讲 电解质溶液习题解答.doc
- IP分片技术与其故障处理.doc
- 第八讲 电子商务环境.ppt
- IQ讯号之剖析和探讨.pdf
- 第八讲 多光谱变换和多源信息复合.ppt
- 护理质量和安全手册.doc
- iscsitarget 在Linux2.6.32内核上编译 若干编译错误和解决方法.pdf
- 2025-2026学年天津市和平区高三(上)期末数学试卷(含解析).pdf
- 2025-2026学年云南省楚雄州高三(上)期末数学试卷(含答案).pdf
- 2025-2026学年甘肃省天水市张家川实验中学高三(上)期末数学试卷(含答案).docx
- 2025-2026学年福建省厦门市松柏中学高二(上)期末数学试卷(含答案).docx
- 2025-2026学年广西钦州市高一(上)期末物理试卷(含答案).docx
- 2025-2026学年河北省邯郸市临漳县九年级(上)期末化学试卷(含答案).docx
- 2025-2026学年河北省石家庄二十三中七年级(上)期末历史试卷(含答案).docx
- 2025-2026学年海南省五指山市九年级(上)期末化学试卷(含答案).docx
- 2025-2026学年河北省唐山市玉田县九年级(上)期末化学试卷(含答案).docx
- 2025-2026学年河北省邢台市市区九年级(上)期末化学试卷(含答案).docx
最近下载
- 产后骨盆修复全流程指导手册.docx VIP
- HG∕T 2568-2021 工业偏硅酸钠.pdf
- 2025年鄂尔多斯市特岗教师招聘考试真题汇编附答案解析.docx VIP
- 24小时客服电话:010-82311666免费咨询热线:4.doc VIP
- 2020ACLS学员课课前测试中文版试题+答案.pdf VIP
- 髌骨脱位康复护理新进展.pptx VIP
- 急救医学-第四章心悸.ppt VIP
- 高中数学必修第四册第十一章综合测试01含答案解析.pdf VIP
- 2022年高考物理核心高频考点专题22 圆周运动的轻绳、轻杆模型(解析版).pdf VIP
- 马工程-中国古代文学史(第二版)上册第三编魏晋文学全套PPT课件50109.pptx
原创力文档

文档评论(0)