下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、实训项目八:Java多线程实训一、实训目的 1掌握Java多线程编程的两种设计和使用方法;2理解多线程的使用,并能通过多线程编程解决实际问题。二、实训要求 能通过编写简单的多线程程序,掌握Thread和Runnable类的使用,利用多线程编程解决实际现实问题。三、实训内容 (一)Thread类的使用 实验1 利用Thread类实现在一个程序中同时完成如下两个任务,任务一:能将ASCII值为1到100对应的字符输出到控制台;任务二:能将1-100的数以数输出。要求尽量我们能看到他们交叉输出。提示:将每一个任务设计为一个线程对象,本实验可以设计TaskNum和TaskChar对象,每个对象继承(e
2、xtends)Thread对象,重写该对象的run()方法,该方法的定义如下:public void run() 在主程序main方法中首先创建两个线程对象,然后调用线程的start() 方法来启动线程的运行。将start方法的调用改为run方法的调用,观察实验结果。public class MyThread01 public static void main(String args) new TaskNum().start();new TaskChar().start();class TaskNum extends Thread int i = 100;public void run() w
3、hile (i 0) try Thread.sleep(10); catch (InterruptedException e) e.printStackTrace();System.out.println(输出数字: + i-);class TaskChar extends Thread int i = 100;public void run() while (i 0) try Thread.sleep(10); catch (InterruptedException e) e.printStackTrace();System.out.println(输出数字: + (char) (i-);(
4、二)Runnable接口的使用实验2 利用Runnable接口类实现在一个程序中同时完成如下两个任务,任务一:能将ASCII值为1到100对应的字符输出到控制台;任务二:能将1-100的数以数输出。要求尽量我们能看到他们交叉输出。提示:将每一个任务设计为一个线程对象,本实验可以设计TaskNum和TaskChar对象,每个对象实现(implements )Runnable接口,实现接口的run()方法,该方法的定义如下:public void run() 在主程序main方法中首先创建两个已经实现Runnabel对象,然后以创建的对象为参数再新建Thread对象,调用线程的start() 方法
5、来启动线程的运行。将start方法的调用改为run方法的调用,观察实验结果public class MyThread02 public static void main(String args) new Thread(new TaskNum01().start();new Thread(new TaskChar01().start();class TaskNum01 implements Runnable int i = 100;public void run() while (i 0) try Thread.sleep(20); catch (InterruptedException e)
6、e.printStackTrace();System.out.println(输出数字: + i-);class TaskChar01 implements Runnable int i = 100;public void run() while (i 0) try Thread.sleep(20); catch (InterruptedException e) e.printStackTrace();System.out.println(输出字符: + (char) (i-);。(三)编写程序,通过使用10个线程,第一个线程完成从1加到10,第2个线程从11加到20,.,第10个线程从91加
7、到100,最后把10个线程结果相加。输出最后的结果。提示:每个线程的工作流程相同,仅求和的初始化值不同,可以设计一个线程程序来完成将一个和从初始化值加递增值,因此,每个实例线程仅需要递增初始化值,该值可以通过构造方法传入。线程类的成员变量必须有:public static int sum=0;/考虑共用,使用类成员变量private int initial;线程类的子任务可以设计成:for(int i=1;i=10;i+) sum+=initial+i;测试主类的流程如下: /统计和,需要所有线程结束后才能进行,因此,需要再访问各线程,必须通过设计一个线程数组,代码如下:MyTask thre
8、ads=new MyTask10;/创建十个线程,并启动线程,代码如下for(int i=0;i10;i+)threadsi=new MyTask(i*10);threadsi.start();/等待所有线程结束后再统计和boolean isend=false;while(!isend)isend=true;for( int i=0;i10;i+)if(threadsi.isAlive()isend=false;/创建的线程全部结束后,才能输出和System.out.println(sum=+MyTask.sum);public class MyThread03 public static void main(String args) ThreadSum threadSums = new ThreadSum10;for (int i = 0; i 10; i+) threadSumsi = new ThreadSum(i * 10);new Thread(threadSumsi).start();try Thread.sleep(30); catch (InterruptedException e) e.printStackTrace();System.out.println(sum= + ThreadSum.sum);class ThreadSum impleme
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 急救护理骨科护理培训
- 护理计划制定技巧
- 护理面试面试成功全攻略
- 护理查房中的团队合作
- 急危患者血糖管理护理
- 护理人文关怀与患者满意度
- 急诊科护理体温监护与护理
- 恩施网络安全责任制度
- 户政管理责任制度
- 托管帮扶主体责任制度
- 老旧小区防火门改造方案
- 工程项目管理-东南大学成虎
- 《湖南省房屋建筑工程指标指数测算标准》
- 《干部履历表》(1999版电子版)
- 《市场营销策划学》国家课程
- 特殊幼儿、残疾幼儿随班就读工作管理制度
- AQ 1083-2011 煤矿建设安全规范 (正式版)
- 双臂操作助行器 要求和试验方法 第2部分:轮式助行器
- 智慧物流与供应链管理全套教学课件
- 公务员历史常识100题附完整答案(各地真题)
- 大学生就业指导 第5版 课件 模块一 大学生就业指导
评论
0/150
提交评论