java实验报告7

更新时间:2023-12-05 19:20:01 阅读量: 教育文库 文档下载

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

广东工业大学实验报告

0 学院 0 专业 0 班 学号 姓名 0 成绩评定_______

实验 7 题目 多线程程序 课程名称 Java与面向对象程序设计 一.实验目的

(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) { }

public void run() { }

public static void main(String args[])

while(true) { }

System.out.println(\线程\计数\count++; if(count==3) break; num=newNum;

System.out.println(\创建线程\

1

广东工业大学实验报告

0 学院 0 专业 0 班 学号 姓名 0 成绩评定_______

实验 7 题目 多线程程序 课程名称 Java与面向对象程序设计 }

{ }

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) { }

public void run() { }

public static void main(String args[]) {

while(true) { }

System.out.println(\线程\计数\count++; if(count==3) break; num=newNum;

System.out.println(\创建线程\

2

广东工业大学实验报告

0 学院 0 专业 0 班 学号 姓名 0 成绩评定_______

实验 7 题目 多线程程序 课程名称 Java与面向对象程序设计 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()

3

广东工业大学实验报告

0 学院 0 专业 0 班 学号 姓名 0 成绩评定_______

实验 7 题目 多线程程序 课程名称 Java与面向对象程序设计 \ }

{

while(true) {

if(tickets<=100) {

synchronized(this) {

System.out.println(Thread.currentThread().getName()+\销售第\票

}

}

} else

tickets++; }

Thread.yield();

break;

(4)生成一个守护线程

package com.gdut.net.javaoo.class070120; //TryDaemon.java public class TryDaemon { }

class DaemonThread implements Runnable {

public void run() {

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(\方法结束\

4

广东工业大学实验报告

0 学院 0 专业 0 班 学号 姓名 0 成绩评定_______

实验 7 题目 多线程程序 课程名称 Java与面向对象程序设计 }

}

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() { }

synchronized void put(char newch) { }

while(available==true)//[代码1]当available变量的值是true的时候,一直挂起线程 try { }

catch(InterruptedException e){} ch=newch; available=true;

notify();//[代码2]唤醒消费者进程

wait();

while(available==false) try { }

catch(InterruptedException e){} available=false; notify(); return ch;

wait();

5

广东工业大学实验报告

0 学院 0 专业 0 班 学号 姓名 0 成绩评定_______

实验 7 题目 多线程程序 课程名称 Java与面向对象程序设计 }

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(\生产的数据是:\ 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(\消费者得到的数据是:\ }

}

}

6

广东工业大学实验报告

0 学院 0 专业 0 班 学号 姓名 0 成绩评定_______

实验 7 题目 多线程程序 课程名称 Java与面向对象程序设计 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();

}

}

四.实验的结果及分析

7

广东工业大学实验报告

0 学院 0 专业 0 班 学号 姓名 0 成绩评定_______

实验 7 题目 多线程程序 课程名称 Java与面向对象程序设计

五.实验心得体会

通过本章节的学习,对于本章节所要学习的目标都初步达到了。 更好地掌握了java程序的编写以及其思想。

8

本文来源:https://www.bwwdw.com/article/9w8t.html

Top