java实验报告7

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
}
}
class DaemonThread implements Runnable
{
public void run()
{
while(true)
System.out.println("线程正在运行");
}
}
(5)实现生产者消费者问题
package com.gdut.net.javaoo.class070120;
}
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
t4.start();
}
}
class SaleTickets implements Runnable
{
private int tickets=1;
public void run()
{
while(true)
{
if(ti源自文库kets<=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[])
{
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)
一.实验目的
(1)了解Thread类并创建线程
(2)了解Runnable接口并创建线程
(3)学习多线程的同时运行
(4)了解守护线程
(5)了解线程同步
二.实验软件环境
jdk1.6.0_18、windows 7
三.实验内容
(1)编写一个java程序,定义一个ThreadA类继承Thread类,在main()方法中创建ThreadA类的三个实例,执行这些线程
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
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);
}
catch(InterruptedException e){}
available=false;
notify();
return ch;
}
synchronized void put(char newch)
{
while(available==true)//[代码1]当available变量的值是true的时候,一直挂起线程
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//主程序
{
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;
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()
}
}
(3)程序模拟铁路售票系统
package com.gdut.net.javaoo.class070120;
//Sale.java
public class Sale
{
public static void main(String args[])
{
SaleTickets t=new SaleTickets();
{
Thread t=new Thread(new DaemonThread());
t.setDaemon(true);//[代码1]将线程t设置为守护线程,可通过setDaemon(true)设置
t.start();//[代码2]启动线程t
System.out.println("main()方法结束");
//[代码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();
a1.start();//[代码5]调用a1的start()方法,启动线程a1
a2.start();//[代码6]调用a2的start()方法,启动线程a2
a3.start();//[代码7]调用a3的start()方法,启动线程a3
System.out.println("主方法main()运行结束!");
//ThreadSynchtonized.java
class common//定义同步资源
{
private char ch;
private boolean available=false;
synchronized char get()
{
while(available==false)
try
{
wait();
try
{
wait();
}
catch(InterruptedException e){}
ch=newch;
available=true;
notify();//[代码2]唤醒消费者进程
}
}
class producer extends Thread//生产者
{
private common comm;
public producer(common thiscomm)
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)
{
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程序的编写以及其思想。
相关文档
最新文档