1304031031-夏婷婷-Java实验报告十

更新时间:2024-07-12 03:37:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

计算机科学与技术系

实 验 报 告

专业名称 13级网络工程 课程名称 Java语言基础 项目名称 Java的多线程

班 级 网工一班

学 号 1304031031 姓 名 夏婷婷

同组人员

实验日期 2015.5.8

一、实验目的与要求:

1. 掌握线程概念,了解应用线程的目的,它是解决什么样的程序问题? 2. 掌握正确使用线程类Thread和线程接口Runnable。 3. 熟悉线程的常用方法和生命期。

二、实验内容

实验程序是Thread_pro工程下的Frame1-2.java。实验程序主要验证两方面的功能:

? 验证前后台并行运行之功能:用一个子线程作为后台运行,使一个字符串在

屏幕上连续向左移动;前台主线程仍然监测键盘和鼠标,使你可以激活按钮和进行文本输入等功能;你在文本框中输入新的字符串,按“改变”按钮后移动字符串内容是你新输入的字符串。这种效果对单线程是难以实现的。 ? 验证常用方法对子线程的控制:Start、Stop、Pause、Play四个按钮分别验

证了线程方法start()、stop()、suspend()、resume()的作用。

? 程序(program)是对数据描述与操作的代码的集合,是应用程序执行的脚

本。进程(process)是程序的一次执行过程,是操作系统运行程序的基本单位。程序是静态的,进程是动态的。系统运行一个程序就是一个进程从创建、运行到消亡的过程。

? 线程是比进程更小的运行单位,是程序中单个顺序的流控制。一个进程

中可以包含多个线程。线程是一种特殊的多任务方式。当一个程序执行多线程时,可以运行两个或更多的由同一个程序启动的任务。这样,一个程序可以使得多个活动任务同时发生。

? 动画是指连续而平滑地显示多幅图像。计算机动画原理十分简单,首先

在屏幕上显示出第一帧画面,过一会儿把它擦掉,然后再显示下一帧画面,如此循环往复。由于人的眼睛存在着一个视觉差,所以感觉好像画面中的物体在不断运动。在计算机上,只要以10~30 幅/每秒钟的速度显示图像即可达到满意的动画质量。 1、 实现如下图动画功能:

(1)程序功能:创建一个显示小球不断跳动并显示不同状态的动画程序。要达到无闪烁现象,显示速度快,占用内存较小的要求。即要使用双缓冲技术创建图像的显示方式,清除闪烁现象。使用线程分别解决准备图像、显示图像的任务,解决显示速度慢,占用内存较大的问题。

(2)准备10 个图像文件(T1.JPG~T10.JPG),它们分别显示小球不同时间的高度和状态,存放在“程序/image”目录下。这是创建动画的基础工作,是动画显示的内容,应用程序只是解决图像“动”即显示的方式。

三、实验分析与小结:

实验源代码:

import java.awt.*; import java.applet.*;

public class LX7_8 extends Applet implements Runnable { Image img[]=new Image[10]; Image buffer; Graphics g1; Thread td; int index=0;

public void init() {

buffer=createImage(getWidth(),getHeight());//创建图像缓冲区 g1=buffer.getGraphics();//创建绘图区 for (int i=0;i<10;i++) {

img[i]=getImage(getCodeBase(),\} }

public void start() { if (td==null) {

td=new Thread(this);//创建线程对象 td.start(); } }

public void stop() { if (td!=null) td=null; }

public void run() { while(true) {

g1.drawImage(img[index],10,20,this);//画图像到缓冲区 repaint();//画出图像 try {

td.sleep(50); }

catch (InterruptedException e) {}

g1.clearRect(10,20,200,200);//清除缓冲区中的图像 index=++index; } }

public void paint(Graphics g) {

g.drawImage(buffer,0,0,this);//画出缓冲区中图像 }

public void update(Graphics g) { paint(g); } }

① 回答【思考问题】中的①、②、⑤问题。

① 为什么class frame1_2继承两个接口,各起什么作用?

程序实现Runnable接口中的run方法,这是一个和Applet同时运行的线程。对线程的控制由Applet的start和stop方法完成,Applet运行时,就在start方法中启动线程,Applet停止时,就在stop方法中停止线程。 ② 找到线程体,说明里面代码完成什么功能? 实现图像的轮流显示使小球不停地跳动。

⑤ 请你自己想法验证repaint()和update()的作用。

Paint()方法无法直接调用,因为要传递给他一个图形参数g,故调用repaint方法间接调用paint方法,repaint方法无参数,它将调用update方法,由update方法调用paint方法传递g参数。 ② 完成【思考问题】③要求修改的程序。

③ 总结你对多线程的体会。什么情况必须用多线程技术?

通过编写多线程的程序可以使用户最大限度的发挥CPU的运算效率,同时在图形用户界面的设计中为了提高对所触发的事件响应的灵敏度,也需要借助于线程。

④ Runnable接口为我们使用带来什么方便? 具有较好的灵活性,可应用于多种场合。

四、其它

得分(百分制)

本文来源:https://www.bwwdw.com/article/0sw.html

Top