java实验报告 下载本文

思考题

1)所有变量初始化、对象创建、参数设置等可以安排在Applet的什么方法内完成.(A)

A.init B. start C. stop D. 以上都不是 2)一个部件重绘时,方法调用按下面哪个次序?(C)

A.直接调用 paint()

B.调用update ,而update会调用 paint()

C.调用repaint(),由它调用update(), update 再调用 paint() D. 调用 repaint(),它将直接调用 paint

3) java.awt.Graphics 类的哪个方法可绘制填充矩形?(A)

A.fillRect() B.drawRect() C.fillOval() D.drawPolygon() E.drawLine() 4) 下列哪个方法不属于播放声音的方法?(C)

A. loop() B. stop() C. start() D. play()

5) 在Applet画面的左上角至右下角画一条直线,则//draw处应如何选择?(A)

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

public class myApplet extends Applet {

public void paint(Graphics g) { //draw } }

A. g.drawLine(0,0,getHeight(),getWidth()); B. g.drawLine(0,getWidth(),0,getHeight()); C. g.drawLine(0,getWidth(),getHeight(),0);

D. g.drawLine(getWidth(),getHeight(),0,0); 6) 下列说法错误的一项是?(D)

A.getDocumentBase()用于获取包含Applet的HTML文件的URL B.getCodeBase()用于获取Applet主类的URL

C.getParameter(String name)用于获取标记中的参数值 D.若指定参数在HTML中没有说明,则Applet将停止运行。 7) 下列说法错误的一项是?(B)

A.getImage()方法无论图像是否存在,都立即返回

B.getImage()方法调用图像的时候,一直等图像加载完毕才返回 C.使用getImage()方法时,只有图像真正需要绘制时,数据才真正加载。 D.由于网络带宽的限制,图像的显示过程可能会很慢。 8)在HTML文件中通过什么标记嵌入Applet(A)

A. B. C. D.

实验七、多线程和数据库、网络Socket编程

实验要求:

编写一个含有多个线程的程序。

编写包含客户端和服务器的网络通信程序。

实验目的:

1. 2. 3. 4. 5. 6. 7. 8. 9.

掌握线程的基本概念。

掌握线程的创建、启动、结束的方法。 理解线程的同步和死锁。 掌握数据库的基本操作。 掌握简单的SQL。 掌握JDBC编程技术。

了解网络通信的基本原理。 掌握Socket通信的基本步骤。 掌握Socket网络编程的方法。

实验主要步骤: 7.1多线程

多线程允许在程序中并发执行多个指令流,每个指令流都称为一个线程,彼此间互相独立。线程又称为轻量级进程,它和进程一样拥有独立的执行控制,由操作系统负责调度,区别在于线程没有独立的存储空间,而是和所属进程中的其它线程共享一个存储空间,这使得线程间的通信远较进程简单。

Java提供了类 java.lang.Thread 来方便多线程编程,这个类提供了大量的方法来方便我们控制自己的各个线程。有两种方法创建线程:1. 继承 Thread 类,覆盖方法 run();2. 实现 Runnable 接口。

Java语言提供了专门机制以解决这种冲突,有效避免了同一个数据对象被多个线程同时访问。这套机制就是 synchronized 关键字,它包括两种用法:synchronized 方法和 synchronized 块。

1. 编写一个有两个线程的程序,一个线程对数据执行加法操作,另外一个

执行减法操作。能控制线程的起停。 2. 在记事本编辑如下源程序: import java.awt.*; import java.util.*;

import java.awt.event.ActionListener; import java.awt.event.ActionEvent; class Data { private int data=100; public int getData(){ return data; } public void setData(int d){ data =d; } }

class AThread extends Thread{ Label dis; Data data; AThread(Label ds,Data dt){ dis =ds; data =dt; } public void run(){ Random ran =new Random(); while(true){ synchronized(data){ String s =\线程A处理:\ data.setData(data.getData()+1); dis.setText(s+data.getData()); System.out.println(s+data.getData()); } try{ sleep(ran.nextInt(3)*1000); } catch(InterruptedException e){} }

} }

class BThread extends Thread{ Label dis; Data data; BThread(Label ds,Data dt){ dis =ds; data =dt; } public void run(){ Random ran =new Random(); while(true){ synchronized(data){ String s =\线程B处理:\ try{ sleep(2000); } catch(InterruptedException e){} data.setData(data.getData()-1); dis.setText(s+data.getData()); System.out.println(s+data.getData()); } try{ sleep(ran.nextInt(6)*1000); } catch(InterruptedException e){} } } }

class Ex13 extends Frame implements ActionListener{ Label dis; Data data; AThread at; BThread bt; Button b; Ex13(){ dis =new Label(); data =new Data(); b =new Button(\暂停\ b.addActionListener(this); add(dis,\ add(b,\ } public void go(){