77范文网 - 专业文章范例文档资料分享平台

java实验报告6

来源:网络收集 时间:2018-12-20 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

广州大学学生实验报告

开课学院及实验室:计算机科学与工程实验室 2011 年 11月 日学院 实验课程名称 实验项目名称 计算机科学与教育软件 年级/专业/班 姓名 学号 成绩 指导老师 JAVA语言实验 实验六:多媒体与多线程处理 (***报告只能为文字和图片,老师评语将添加到此处,学生请勿作答***)

一、实验目的

(1)理解线程的概念;

(2)了解线程的状态和生命周期; (3)学习继承Thread 类来创建线程; (4)使用Runnable 接口。

(5)学习Runnable 接口在Applet 程序中的使用; (6)掌握Runnable 接口实现多线程的优点; (7)加深对Applet 中的几个常用方法的理解。 (8)理解线程同步的含义;

(9)掌握synchronized 同步方法与synchronized 同步语句的用法; (10)学会使用Thread Group 控制线程。 (11)理解线程的挂起与恢复的概念; (12)掌握wait()与notify()方法的使用。 (13)了解动画的原理;

(14)进一步了解多线程概念;

(15)运用Java 的多线程实现动画的应用。

(16)了解图像的装载、显示和修改显示的大小; (17)了解Image 类的常用的方法;

(18)了解ImageIcon 类的构造方法和常用的方法。 (19)熟练掌握图像的装载、显示; (20)了解和掌握双缓冲技术。

二、实验内容

1、本实验是要设计一个包含多线程运行的程序,在主程序中依次创建4 个线程,然后按顺序启动这4 个线程,每个线程在运行时所执行的动作都是先睡眠sleep 一会儿,醒来之后再继续执行,在这个过程中注意观察线程是如何调度运行的。

2、在这个实验中要设计一个能显示时间的 Applet 程序,要完成这个实验,学生应对Applet 程序有基本的了解,我们会先运行一个有些错误的程序,然后在分析错误的原因之后,逐步修改以得出正确的程序。

3、本实验要用程序模拟一个银行账户存款的过程。程序中会有多个线程同时对同一个银行账户进行操作,每个线程的操作都按相同的步骤进行,即先查出该账户当前的余额,在此基础上加1,然后又把新余额写回到账户上,这样连续执行若干次,最后账户上的余额就会累加成一个新余额值。由于银行账户是临界资源,一次只能由一个线程完成读写操作,因此必

须处理好线程之间的同步关系。该实验包括两个练习程序,一个是没有实施线程同步的程序,另一个则是实施了线程同步的程序,分别运行这两个程序,可以看出线程同步的作用。 4、编写一个 Applet 小应用程序能够显示时间,当用户最小化Applet 时,程序会被挂起,当还原Applet 时,程序又会恢复执行,同时Applet 中应显示挂起和恢复的时间。程序运行的效果如图所示。

5、设计一个文字显示面板,文字可以在面板上进行滚动显示。本实验中有两个练习:一个是通过Thread 来实现动画时间问隔的设置;另一个是通过Timer 来实现对动画时间间隔的制定。通过这两个练习,了解动画制作的基本原理和过程。

6、设计一个幻灯片程序,通过装载一系列的图片,将这些图片通过幻灯片的形式显示出来。在显示的过程中可以更改图片的大小。

7、利用一个 Image 类和线程,将一幅图片制作出它的水中倒影,并能显示水的波纹。

三、实验设备

Windows XP JAVA JDK 6.0

四、实验程序

//1.FourThreads.java public class FourThreads { }

class MyThread extends Thread {

public void run() {

// 让线程进入休眠状态,休眠指定的时间 try {

System.err.println(getName() + \将休眠\ + sleepTime + \毫秒\);

private int sleepTime;

public MyThread(String name) { }

super(name);

// 设置随机时间在0~5秒之间

sleepTime = (int) (Math.random() * 5001); public static void main(String[] args) {

MyThread thread1 = new MyThread(\); MyThread thread2 = new MyThread(\); MyThread thread3 = new MyThread(\); MyThread thread4 = new MyThread(\); System.err.println(\准备启动线程...\); thread1.start(); thread2.start(); thread3.start(); thread4.start();

System.err.println(\子线程已全部启动,主线程结束\\n\); }

}

}

Thread.sleep(sleepTime); exception.printStackTrace();

} catch (InterruptedException exception) {

System.err.println(getName() + \结束休眠\); }

//3.AccountWithoutSync.java public class AccountWithoutSync { }

class Account {

public int getBalance() { private int balance = 0;

class PayInThread extends Thread { }

public void run() { }

int balance;

balance = bank.getBalance() + 1; try { }

bank.setBalance(balance);

Thread.sleep(10); System.out.println(ex);

} catch (InterruptedException ex) {

public AccountWithoutSync() { }

for (int i = 0; i < 100; i++) { }

thread[i] = new Thread(new PayInThread()); thread[i].start();

public static void main(String[] args) {

AccountWithoutSync test = new AccountWithoutSync();

System.out.println(\最后存款是: \ + test.bank.getBalance()); }

private Thread[] thread = new Thread[100]; private Account bank = new Account();

}

}

return balance;

public void setBalance(int balance) { }

this.balance = balance;

//4.SuspendResumeApplet.java import java.awt.Graphics; import java.util.Calendar; import javax.swing.JApplet;

public class SuspendResumeApplet extends JApplet implements Runnable {

public synchronized void resumeThread() {

if (suspendFlag) {

suspendFlag = false; notify();

resumeTime = Calendar.getInstance();

public void stop(){

suspendThread(); suspendTime = time;

sushours = suspendTime.get(Calendar.HOUR);

susmins=suspendTime.get(Calendar.MINUTE); // 代码2 获取分钟 public void start() { }

resumeThread(); public void init() {

suspendFlag = false;

appletThread = new Thread(this); Thread appletThread; boolean suspendFlag;

Calendar time, suspendTime, resumeTime;

int hours, mins, secs, sushours, susmins, sussecs, rehours, remins,

resecs;

appletThread.start();//代码1 //启动线程appletThread }

sussecs=suspendTime.get(Calendar.SECOND); //代码3 获取表 }

}

}

rehours = resumeTime.get(Calendar.HOUR); remins = resumeTime.get(Calendar.MINUTE); resecs = resumeTime.get(Calendar.SECOND);

private synchronized void waitForNotificationToResume() throws InterruptedException { }

public synchronized void suspendThread() { }

public void run() { }

public void paint(Graphics g) {

super.paint(g);

g.drawString(\当前时间:\ + String.valueOf(hours) + \:\

+ String.valueOf(mins) + \:\ + String.valueOf(secs), 50,

while (true) { }

try { }

time = Calendar.getInstance(); hours = time.get(Calendar.HOUR); mins = time.get(Calendar.MINUTE); secs = time.get(Calendar.SECOND); System.out.println(\秒表:\ + secs); repaint();

Thread.sleep(500);//代码4 //线程休眠500毫秒 waitForNotificationToResume(); exception.printStackTrace();

suspendFlag = true; while (suspendFlag)

wait();

} catch (InterruptedException exception) {

50);

g.drawString(\挂起时间:\ + String.valueOf(sushours) + \:\

+ String.valueOf(susmins) + \:\ + String.valueOf(sussecs), 50,80); + String.valueOf(remins) + \:\ + String.valueOf(resecs), 50,100);

g.drawString(\恢复时间:\ + String.valueOf(rehours) + \:\

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库java实验报告6在线全文阅读。

java实验报告6.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/378112.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: