一.实验目的
(1)了解Thread类并创建线程
(2)了解Runnable接口并创建线程
(3)学习多线程的同时运行
(4)了解守护线程
(5)了解线程同步
二.实验软件环境
jdk1.6.0_18、windows 7
三.实验内容
(1)编写一个java程序,定义一个ThreadA类继承Thread类,在main()方法中创建ThreadA类的三个实例,执行这些线程
package com.gdut.net.javaoo.class070120;
//ThreadA.java
class ThreadA extends Thread
{
int count=1;
int num;
public ThreadA(int newNum)
{
num=newNum;
System.out.println("创建线程"+num);
}
public void run()
{
while(true)
{
System.out.println("线程"+num+":计数"+count);
count++;
if(count==3)
break;
}
}
public static void main(String args[])
{
ThreadA a1= new ThreadA(1);//[代码2]创建ThreadA的对象a1,传入参数1
ThreadA a2= new ThreadA(2);//[代码3]创建ThreadA的对象a2,传入参数2
ThreadA a3= new ThreadA(3);//[代码4]创建ThreadA的对象a3,传入参数3
a1.start();//[代码5]调用a1的start()方法,启动线程a1
a2.start();//[代码6]调用a2的start()方法,启动线程a2
a3.start();//[代码7]调用a3的start()方法,启动线程a3
System.out.println("主方法main()运行结束!");
}
}
(2)编写一个java程序,定义一个类ThreadB实现Runnable接口,在main()方法中创建ThreadB类的三个实例,执行这些线程
package com.gdut.net.javaoo.class070120;
//ThreadB.java
class ThreadB implements Runnable
{
int count=1;
int num;
public ThreadB(int newNum)
{
num=newNum;
System.out.println("创建线程"+num);
}
public void run()
{
while(true)
{
System.out.println("线程"+num+":计数"+count);
count++;
if(count==3)
break;
}
}
public static void main(String args[])
{
Thread a1= new Thread(new ThreadB(1));//[代码2]创建Thread的对象a1,传入参数new ThreadB(1)
Thread a2= new Thread(new ThreadB(2));//[代码3]创建Thread的对象a2,传入参数new ThreadB(2)
Thread a3= new Thread(new ThreadB(3));//[代码4]创建Thread的对象a3,传入参数new ThreadB(3)
a1.start();//[代码5]调用a1的start()方法,启动线程a1
a2.start();//[代码6]调用a2的start()方法,启动线程a2
a3.start();//[代码7]调用a3的start()方法,启动线程a3
System.out.println("主方法main()运行结束!");
}
}
(3)程序模拟铁路售票系统
package com.gdut.net.javaoo.class070120;
//Sale.java
public class Sale
{
public static void main(String args[])
{
SaleTickets t=new SaleTickets();
//[代码1]分别创建4个线程,都传入参数t,再启动它们
Thread t1=new Thread(t);
Thread t2=new Thread(t);
Thread t3=new Thread(t);
Thread t4=new Thread(t);
t1.start();
t2.start();
t3.start();
t4.start();
}
}
class SaleTickets implements Runnable
{
private int tickets=1;
public void run()
{
while(true)
{
if(tickets<=100)
{
synchronized(this)
{
System.out.println(Thread.currentThread().getName()+"销售第"+tickets+"票");
tickets++;
}
Thread.yield();
}
else
break;
}
}
}
(4)生成一个守护线程
package com.gdut.net.javaoo.class070120;
//TryDaemon.java
public class TryDaemon
{
public static void main(String args[])
{
Thread t=new Thread(new DaemonThread());
t.setDaemon(true);//[代码1]将线程t设置为守护线程,可通过setDaemon(true)设置
t.start();//[代码2]启动线程t
System.out.println("main()方法结束");
}
}
class DaemonThread implements Runnable
{
public void run()
{
while(true)
System.out.println("线程正在运行");
}
}
(5)实现生产者消费者问题
package com.gdut.net.javaoo.class070120;
//ThreadSynchtonized.java
class common//定义同步资源
{
private char ch;
private boolean available=false;
synchronized char get()
{
while(available==false)
try
{
wait();
}
catch(InterruptedException e){}
available=false;
notify();
return ch;
}
synchronized void put(char newch)
{
while(available==true)//[代码1]当available变量的值是true的时候,一直挂起线程
try
{
wait();
}
catch(InterruptedException e){}
ch=newch;
available=true;
notify();//[代码2]唤醒消费者进程
}
}
class producer extends Thread//生产者
{
private common comm;
public producer(common thiscomm)
{
comm=thiscomm;
}
public void run()
{
char c;
for(c='a';c<='e';c++)
{
System.out.println("生产的数据是:"+c);
comm.put(c);
}
}
}
class consumer extends Thread//消费者
{
private common comm;
public consumer(common thiscomm)
{
comm=thiscomm;
}
public void run()
{
char c;
for(int i=0;i<5;i++)
{
c=comm.get();
System.out.println("消费者得到的数据是:"+c);
}
}
}
public class ThreadSynchronized//主程序
{
public static void main(String args[])
{
common comm=new common();
producer p=new producer(comm);
consumer c=new consumer(comm);
p.start();
c.start();
}
}
四.实验的结果及分析
五.实验心得体会
通过本章节的学习,对于本章节所要学习的目标都初步达到了。
更好地掌握了java程序的编写以及其思想。
第二篇:java实验报告7数据库操作
2010—2011学年第 1 学期
合肥学院数理系
实验报告?
课程名称: 《程序设计与算法语言》 实验项目: Applet程序设计 实验类别: 综合性□ 设计性√ 验证性□ 专业班级: 09信息与计算科学班 姓 名: 学 号: 实验地点: 校内机房 实验时间: 2010.11.14 — 2010.11.18 指导教师: 钱泽强 成 绩:
一、实验目的
掌握数据库的建立;熟悉结构化查询SQL的命令;学会编写加载数据库驱动和链接数据库的JAVA程序;应用自定义的图形用户界面,通过调用JAVA.SQL包中的类和接口库,编写数据库操作的应用程序。
二、实验内容
1、建立Access 数据库 ;
2、编写图形用户界面的应用程序,完成对Access 数据库中记录的查询、修改、增加、删除等操作
三、实验方案(程序设计说明)
四、实验步骤或程序(经调试后正确的源程序)
注:程序可附纸
1
五、程序运行结果
六、实验总结
七、教师评语及成绩
2010
年 月 日2