Java实验报告(w15,w16)1.doc_第1页
Java实验报告(w15,w16)1.doc_第2页
Java实验报告(w15,w16)1.doc_第3页
Java实验报告(w15,w16)1.doc_第4页
Java实验报告(w15,w16)1.doc_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

福建师大福清分校计算机实验报告(W15,W16)院/系: 课程名称:Java面向对象程序设计 日期:专业12计本组号学号实验室班级姓名老师签名 赵少卡实验名称集合类、多线程1成绩评定实验环境JDKExitPlus实验目的和要求1、熟练掌握几种常用的类集框架。2、掌握线程的创建方式与几个常用的线程方法。实验原理LinkedList是通过节点直接彼此连接来实现的。每一个节点都包含前一个节点的引用,后一个节点的引用和节点存储的值。当一个新节点插入时,只需要修改其中保持先后关系的节点的引用即可,当删除记录时也一样。JAVA多线程实现方式主要有三种:继承Thread类、实现Runnable接口、使用ExecutorService、Callable、Future实现有返回结果的多线程。其中前两种方式线程执行完后都没有返回值,只有最后一种是带返回值的。继承Thread类的方法尽管被我列为一种多线程实现方式,但Thread本质上也是实现了Runnable接口的一个实例,它代表一个线程的实例,并且,启动线程的唯一方法就是通过Thread类的start()实例方法。start()方法是一个native方法,它将启动一个新线程,并执行run()方法。这种方式实现多线程很简单,通过自己的类直接extend Thread,并复写run()方法,就可以启动新线程并执行自己定义的run()方法。实验内容1、补全以下的排序程序。import java.util.*;public class TreeSetExample public static void main(String args ) TreeSet mytree=new TreeSet(); for(int i=0;i5;i+) Scanner read=new Scanner(System.in); System.out.println(学生的姓名:); String name=read.nextLine( ); System.out.println(输入分数(整数):); int score=read.nextInt( ); 【代码1】 / 向mytree添加Student对象 Iterator te=【代码2】/ mytree返回Iterator对象 while(【代码3】) / 判断te中是否存在元素 Student stu=【代码4】 / 返回te中的下一个元素 System.out.println(++ +stu.english); class Student implements Comparable int english=0; String name; Student(int e,String n) english=e;name=n; public int compareTo(Object b) Student st=(Student)b; return (this.english-st.english); 2、补全以下的随机布雷程序,其中“”符号表示地雷。import java.util.*;class Block String name; boolean boo=false; public void setName(String name) 【代码1】 / 将参数name传值给成员变量 public String getName() 【代码2】 / 返回成员变量name boolean isMine( ) 【代码3】 / 返回成员变量boo public void setBoolean(boolean boo) 【代码4】 / 将参数boo传值给成员变量boo public class MineExample public static void main(String args ) int mine=25; Block block =new Block88; for(int i=0;i8;i+) for(int j=0;j8;j+) blockij=new Block( ); LinkedList list=【代码5】 / 创建list for(int i=0;i8;i+) for(int j=0;j=0) int size=【代码7】 / 返回list中节点个数 int randomIndex=(int)(Math.random( )*size); Block b=【代码8】 / 返回list中索引值为randomIndex的节点中的对象 b.setName(); b.setBoolean(true); 【代码9】 / list删除索引值为randomIndex的节点 mine-; for(int i=0;i8;i+) for(int j=0;j8;j+) if(blockij.isMine() ) else int mineNumber=0; for(int k=Math.max(i-1,0);k=Math.min(i+1,7);k+) for(【代码10】) if(blockkt.isMine() ) mineNumber+; blockij.setName(+mineNumber); for(int i=0;i8;i+) for(int j=0;j8;j+) System.out.printf(%2s,blockij.getName() ); System.out.printf(%n); 3、若有以下场景:一个学生(Student)可以选修多门课程,一门课程(Course)又可以由多个学生选修,试使用集合类实现上述多对多关系。 4、补全以下的多线程程序。class Tortoise extends Thread int sleepTime=0,liveLength=0; Tortoise(int sleepTime,String name,int liveLength) this.sleepTime=sleepTime; this.liveLength=liveLength; 【代码1】 / 设置线程的名字为name public void run() while(true) liveLength-; System.out.printf(); try 【代码2】 / 让线程调用 sleep()方法进入中断状态,sleepTime毫秒后/ 重新排队,等待CUP资源 catch(InterruptedException e) if(liveLength=0) System.out.printf(getName()+进入死亡状态n); 【代码3】 / 结束run()方法的语句 class Rabbit extends Thread int sleepTime=0,liveLength; Rabbit(int sleepTime,String name,int liveLength) this.sleepTime=sleepTime; this.liveLength=liveLength; 【代码4】 / 设置线程的名字为name public void run() while(true) liveLength-; System.out.printf(*); try 【代码5】 / 让线程调用 sleep()方法进入中断状态,sleepTime毫秒后/ 线程重新排队,等待CPU资源 catch(InterruptedException e) if(liveLength=0) System.out.printf(getName()+进入死亡状态n); 【代码6】 / 结束run()方法的语句 public class ThreadExample public static void main(String args ) Rabbit rabit; rabit=【代码7】 / 新建线程rabit Tortoise tortoise; tortoise=【代码8】 / 新建线程tortoise 【代码9】 / 启动线程tortoise 【代码10】 / 启动线程rabit 5、编写一个多线程程序,测试多线程程序的运行。要求:(1)使用继承方式创建线程类,名称为TestThread;该类有两个属性,一个字符串代表线程名name,一个整数代表该线程要休眠的时间delay。(2)线程执行时,显示线程名和休息时间。(3)再定义测试类,名称为Test,主函数中创建2个线程对象以展示执行情况。系统实施3.class E_3.class Course.class Student.class S_C.测试报告12345结果分析注:如果是多线程的题目,因此,这部分除了要描述碰到的问题、什么原因、如何解决、有何体会之外,还要分析上述测试结果中各线程的状态变化。4. 首先两个进程(休眠期一样,都是1000)争夺cpu资源,tortoise 先抢到,先运行tortoise tortoise 进入休眠期后rabit运行,然后进入休眠,之后两个线程同时醒来,继续争夺cpu资源,如此重复了4次,最后两个线程都结束了5.首先两个进程(休眠期一样,都是1000)争夺cpu资源,a 先抢到,先运行

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论