多线程实验报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

宁波工程学院电信学院计算机教研室

实验报告

课程名称: Java 2 实验项目: 多线程实验 指导教师: **** 实验位置: 电信楼机房 姓 名: *** 学 号: **** 班 级: **** 日 期:

一、实验目的

1、掌握多线程编程的特点和工作原理;

2、掌握编写线程程序的方法

3、了解线程的调度和执行过程

4、掌握线程同步机理

二、实验环境

windows 记事本,java jdk 1.60版本,cmd 命令运行窗口

三、实验内容

实验一:

应用Java 中线程的概念写一个Java 程序(包括一个测试线程程序类TestThread ,一个Thread 类的子类PrintThread )。在测试程序中用子类PrintThread 创建2个线程,使得其中一个线程运行时打印10次“线程1正在运行”,另一个线程运行时打印5次“线程2正在运行

源程序:

public class A

{

public static void main(String args[])

{

Test1 A1;

Test2 A2;

A1=new Test1();

A2=new Test2();

A1.start();

A2.start();

}

}

class PrintThread extends Thread

{

}

class Test1 extends PrintThread

{

public void run()

{

for(int i=1;i<=10;i++)

{

System.out.println("线程1正在运行!");

}

}

}

class Test2 extends PrintThread

{

public void run()

{

for(int i=1;i<=5;i++)

{

System.out.println("线程2正在运行!");

}

}

}

运行结果:

实验二:

将上述程序用Runnable接口改写,并上机验证源程序public class D

{

public static void main(String args[])

{

Move move=new Move();

move.test1.start();

move.test2.start();

}

}

class Move implements Runnable

{

Thread test1,test2;

Move()

{

test1=new Thread(this);

test1.setName("线程1正在运行!");

test2=new Thread(this);

test2.setName("线程2正在运行!");

}

public void run()

{

if(Thread.currentThread()==test1)

{

for(int i=1;i<=10;i++)

{

System.out.println(test1.getName());

}

}

else

{

for(int i=1;i<=5;i++)

{

System.out.println(test2.getName());

}

}

}

运行结果:

实验三:

import java.awt.*;

import java.awt.event.*;

public class E

{ public static void main(String args[])

{ new FrameMoney();

}

}

class FrameMoney extends Frame

implements Runnable,ActionListener

{ int money=100;

TextArea text1,text2;

Thread 会计,出纳;

int weekDay;

Button start=new Button("开始演示");

FrameMoney()

{ 会计=new Thread(this);

出纳=new Thread(this);

text1=new TextArea(12,15);

text2=new TextArea(12,15);

setLayout(new FlowLayout());

add(start);

add(text1);

add(text2);

setVisible(true);

setSize(360,300);

validate();

addWindowListener(new WindowAdapter()

{ public void windowClosing(WindowEvent e)

{System.exit(0);

}

});

start.addActionListener(this);

}

public void actionPerformed(ActionEvent e)

{ if(!(出纳.isAlive()))

{ 会计=new Thread(this);

出纳=new Thread(this);

}

try

{ 会计.start();

出纳.start();

}

catch(Exception exp){}

}

public synchronized void 存取(int number) //存取方法

{ if(Thread.currentThread()==会计)

{ text1.append("今天是星期"+weekDay+"\n");

for(int i=1;i<=3;i++) //会计使用存取方法存入90元,存入30元,稍歇一下

{ money=money+number; //这时出纳仍不能使用存取

相关文档
最新文档