多线程实验报告_多线程编程实验报告
多线程实验报告由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“多线程编程实验报告”。
宁波工程学院电信学院计算机教研室
实验报告
课程名称: Java 2 姓 名: *** 实验项目: 多线程实验 学 号: **** 指导教师: **** 班 级: **** 实验位置: 电信楼机房 日 期:
一、实验目的1、掌握多线程编程的特点和工作原理;
2、掌握编写线程程序的方法
3、了解线程的调度和执行过程
4、掌握线程同步机理
二、实验环境
windows记事本,java jdk 1.60版本,cmd命令运行窗口
三、实验内容 实验一:
应用Java中线程的概念写一个Java程序(包括一个测试线程程序类TestThread,一个Thread类的子类PrintThread)。在测试程序中用子类PrintThread创建2个线程,使得其中一个线程运行时打印10次“线程1正在运行”,另一个线程运行时打印5次“线程2正在运行
源程序:
public cla A { public static void main(String args[]){
Test1 A1;
Test2 A2;
A1=new Test1();
A2=new Test2();
A1.start();
A2.start();} } cla PrintThread extends Thread { } cla Test1 extends PrintThread { public void run(){
for(int i=1;i
{
System.out.println(“线程1正在运行!”);
} } } cla Test2 extends PrintThread { public void run(){
for(int i=1;i
{
System.out.println(“线程2正在运行!”);
} } } 运行结果:
实验二:
将上述程序用Runnable接口改写,并上机验证源程序 public cla D { public static void main(String args[]){
Move move=new Move();
move.test1.start();
move.test2.start();} } cla 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
{
System.out.println(test1.getName());
} } } else { for(int i=1;i
System.out.println(test2.getName());} } 运行结果:
实验三:
import java.awt.*;import java.awt.event.*;public cla E
{ public static void main(String args[])
{ new FrameMoney();
} } cla 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
{ money=money+number;
//这时出纳仍不能使用存取方法
try { Thread.sleep(1000);//因为会计还没使用完存取方法
}
catch(InterruptedException e){}
text1.append(“帐上有”+money+“万n”);
}
}
else if(Thread.currentThread()==出纳)
{ text2.append(“今天是星期 ”+weekDay+“n”);
for(int i=1;i
{ money=money-number/2;
//这时会计仍不能使用存取方法
try { Thread.sleep(1000);//因为出纳还没使用完存取方法
}
catch(InterruptedException e){}
text2.append(“帐上有”+money+“万n”);
}
}
}
public void run()
{ if(Thread.currentThread()==会计||Thread.currentThread()==出纳)
{ for(int i=1;i
{ weekDay=i;
存取(30);
}
}
} }
运行结果:
}
四、实验心得与小结
通过本次实验,基本了解了线程的概念,作用,方法以及使用规则。1.首先:java 程序是建立在线程之上的。.2.创建线程必须继承 Thread cla 它已经为线程的创建和运行做了必要的配置。run是线程就重要的方法。你必须覆写这个方法达到你想要的目的。3.run方法所包含的代码就是和其他线程同时运行的代码以达到同一时刻运行多段代码的目的。当终止了 run以后。这个线程也就结束了。调用线程的 start方法才会执行 run方法。
4.线程的生命周期:新建——Thread.State.NEW:当一个 Thread 类或者其子类的对象被声明并创建时,新的线程对象处于新建状态,此时它已经有了相应的内存空间和其他资源start方法尚未被调整用就绪可执行状态——Thread.State.RUNNABLE:处于新建状态的线程被启动后,将进入线程队列排队,这个时候具备了运行的条件,一旦轮到 CPU 的时候,就可以脱离创建它的主线程独立开始自己的生命周期运行:就绪的线程被调度进入运行状态,每一个 Thread 类及其子类的对象都有一个重要的run方法,当线程对象被调度执行的时候,它将自动调用本对象的 run方法,从第一句代码开始执行。
.net 开发人员面试题 - 多线程最近园子里好多人谈到了招聘面试,特别是多线程这个问题出现了很多次;多线程也是我在面试中很喜欢问的一个题目,和大家分享一下(仅限.net)为什......
广州中医药大学信息技术学院课程名称:专业班级:学生学号:学生姓名:实验名称:实验成绩:课程类别:验 报 告Java程序设计计算机科学与技术2008级2008081042 王湛泽JAVA程序设计 必修□......
2.并行和并发的概念与区别:-如果某个系统支持两个或多个动作(Action)同时存在,那么这个系统就是一个并发系统 -如果某个系统支持两个或多个动作同时执行,那么这个系统就是一个并......
C++多线程编程简单实例(2012-05-18 16:26:01)转载▼标签:itC++本身并没有提供任何多线程机制,但是在windows下,我们可以调用SDK win32 api来编写多线程的程序,下面就此简单的讲......
多线程人生的杂文随笔写下这个题目的时候,我的生活又恢复到了需要在周末耗在咖啡厅连续写上好几天文章的状态,虽然此前有这种高强度的装填,但是要恢复到当时的状态还是得花上一......
