ImageVerifierCode 换一换
格式:DOCX , 页数:14 ,大小:92.68KB ,
资源ID:6075139      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/6075139.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(Java多线程实验报告汇总.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

Java多线程实验报告汇总.docx

1、Java多线程实验报告汇总西 安 邮 电 大 学(计算机学院)课内实验报告实验名称: 多线程 专业名称: 计算机科学与技术班 级: 计科1405班 学生姓名: 高宏伟 学 号: 04141152指导教师: 刘霞林实验日期: 2016.12.08一、实验目的 1线程的概念、线程的生命周期。2多线程的编程:继承Thread类与使用Runnable接口。3使用多线程机制实现动画。二、实验要求 1. 掌握利用JAVA语言编写多线程程序的方法。 2. 掌握线程的调度方法。 3. 掌握多线程环境中GUI程序的编写方法。三、实验内容 (一)汉字打字练习。实验要求:编写一个Java应用程序,在主线程中再创建一

2、个Frame类型的窗口,在该窗口中再创建1个线程giveWord。线程giveWord每隔2秒钟给出一个汉字,用户使用一种汉字输入法将该汉字输入到文本框中。 程序模板:WordThread.javaimport java.awt.*;public class WordThread extends Thread char word; int k=19968; Label com; WordThread(Label com) =com; public void run() k=19968; while(true) word=(char)k; com.setText(+word); try 【代码1

3、】/调用sleep方法使得线程中断6000豪秒 catch(InterruptedException e) k+; if(k=29968) k=19968; ThreadFrame.javaimport java.awt.*;import java.awt.event.*;public class ThreadFrame extends Frame implements ActionListener Label wordLabel; Button button; TextField inputText,scoreText; 【代码2】/用WordThread声明一个giveWord对象 int

4、 score=0; ThreadFrame() wordLabel=new Label( ,Label.CENTER); wordLabel.setFont(new Font(,Font.BOLD,72); button=new Button(开始); inputText=new TextField(3); scoreText=new TextField(5); scoreText.setEditable(false); 【代码3】/创建giveWord,将wordLabel传递给WordThread构造方法的参数 button.addActionListener(this); inputTe

5、xt.addActionListener(this); add(button,BorderLayout.NORTH); add(wordLabel,BorderLayout.CENTER); Panel southP=new Panel(); southP.add(new Label(输入标签所显示的汉字后回车:); southP.add(inputText); southP.add(scoreText); add(southP,BorderLayout.SOUTH); setBounds(100,100,350,180); setVisible(true); validate(); addW

6、indowListener(new WindowAdapter() public void windowClosing(WindowEvent e) System.exit(0); ); public void actionPerformed(ActionEvent e) if(e.getSource()=button) if(!(【代码4】) /giveWord调用方法isAlive() giveWord=new WordThread(wordLabel); try 【代码5】/giveWord调用方法start() catch(Exception exe) else if(e.getSou

7、rce()=inputText) if(inputText.getText().equals(wordLabel.getText() score+; scoreText.setText(得分:+score); inputText.setText(null); WordThread.javapublic class ThreadWordMainClass public static void main(String args) new ThreadFrame(); 实验后的练习:1. 在WordThread类中增加int型的成员time,其初值为6000,将其中的【代码1】更改为线程中断time

8、毫秒。在WordThread类增加public void setTime(int n)方法,使得WordThread线程对象可以调用该方法修改time的值。(二)旋转的行星。 实验要求:编写一个应用程序,模拟月亮围绕地球旋转、地球围绕太阳旋转。 程序模板:Mycanvas.javaimport java.awt.*;public class Mycanvas extends Canvas int r; Color c; public void setColor(Color c) this.c=c; public void setR(int r) this.r=r; public void pa

9、int(Graphics g) g.setColor(c); g.fillOval(0,0,2*r,2*r); public int getR() return r; Planet.javaimport java.awt.*;public class Planet extends Panel implements Runnable 【代码1】 /用Thread类声明一个moon对象 Mycanvas yellowBall; double pointX=new double360, pointY=new double360; /用来表示画布左上角端点坐标的数组 int w=100,h=100;

10、int radius=30; Planet() setSize(w,h); setLayout(null); yellowBall=new Mycanvas(); yellowBall.setColor(Color.yellow); add(yellowBall); yellowBall.setSize(12,12); yellowBall.setR(12/2); pointX0=0; pointY0=-radius; double angle=1*Math.PI/180; /刻度为1度 for(int i=0;i359;i+) /计算出数组中各个元素的值 pointXi+1=pointXi*

11、Math.cos(angle)-Math.sin(angle)*pointYi; pointYi+1=pointYi*Math.cos(angle)+pointXi*Math.sin(angle); for(int i=0;i360;i+) pointXi=pointXi+w/2; /坐标平移 pointYi=pointYi+h/2; yellowBall.setLocation(int)pointX0-yellowBall.getR(),(int)pointY0-yellowBall.getR(); 【代码2】 /创建 moon线程,当前面板做为该线程的目标对象 public void st

12、art() try moon .start(); catch(Exception exe) public void paint(Graphics g) g.setColor(Color.blue); g.fillOval(w/2-9,h/2-9,18,18); public void run() int i=0; while(true) i=(i+1)%360; yellowBall.setLocation(int)pointXi-yellowBall.getR(),(int)pointYi-yellowBall.getR(); try 【代码3】 / Thread类调用类方法sleep使得线

13、程中断10豪秒 catch(InterruptedException e) HaveThreadFrame.javaimport java.awt.*;import java.awt.event.*;public class HaveThreadFrame extends Frame implements Runnable 【代码4】 /用Thread类声明一个rotate对象 Planet earth; double pointX=new double360, pointY=new double360; int width,height; int radius=120; HaveThread

14、Frame() rotate=new Thread(this); earth=new Planet(); setBounds(0,0,360,400); width=getBounds().width; height=getBounds().height; pointX0=0; pointY0=-radius; double angle=1*Math.PI/180; for(int i=0;i359;i+) pointXi+1=pointXi*Math.cos(angle)-Math.sin(angle)*pointYi; pointYi+1=pointYi*Math.cos(angle)+p

15、ointXi*Math.sin(angle); for(int i=0;i100&distance=100) b.setLocation(10,60); notifyAll(); if(Thread.currentThread()=second) while(distance=10&distance200) distance=10; b.setLocation(100,60); notifyAll(); MoveButtonMainClass.javapublic class MoveButtonMainClass public static void main(String args) new MoveButton(); 实验后的练习:1. 在MoveButton类中再增加一个蓝色的按钮和一个third线程,third线程负责将这个蓝色的按钮从(200,60)运动到(300,60)。四、实验结果 (一)汉字打字练习。(二)旋转的行星。 (三)双线程接力。五、总结通过这次实验掌握了利用JAVA语言编写多线程程序的方法,掌握了线程的调度方法,掌握了多线程环境中GUI程序的编写方法。了解了线程的概念、线程的生命周期。以及多线程的编程方法:继承Thread类与使用Runnable接口,学会了使用多线程机制实现动画。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1