8-实验八Java多线程操作(实验报告内容)

合集下载

java多线程程序设计实验总结

java多线程程序设计实验总结

java多线程程序设计实验总结

一、实验目的

本次实验旨在通过编写Java多线程程序,掌握多线程编程的基本概念和技能,理解多线程程序的运行原理,提高对Java语言的熟练度。

二、实验内容

本次实验分为三个部分:创建线程、线程同步和死锁。

2.1 创建线程

创建线程有两种方式:继承Thread类和实现Runnable接口。继承Thread类需要重写run方法,在run方法中编写线程执行的代码;实现Runnable接口需要实现run方法,并将其作为参数传入Thread

类的构造函数中。在创建多个线程时,可以使用同一个Runnable对

象或者不同的Runnable对象。

2.2 线程同步

当多个线程同时访问共享资源时,可能会出现数据不一致等问题。为

了避免这种情况,需要使用同步机制来保证各个线程之间的协调运行。常见的同步机制包括synchronized关键字和Lock接口。

synchronized关键字可以用来修饰方法或代码块,在执行该方法或代

码块时,其他所有试图访问该方法或代码块的线程都必须等待当前执

行完成后才能继续执行。

Lock接口提供了更加灵活和高级的锁机制,可以支持更多种类型的锁,如读写锁、可重入锁等。

2.3 死锁

死锁是指两个或多个线程在互相等待对方释放资源的情况下,都无法

继续执行的现象。死锁的发生通常由于程序设计不当或者资源分配不

合理所导致。

为避免死锁的发生,可以采取以下措施:避免嵌套锁、按照固定顺序

获取锁、避免长时间占用资源等。

三、实验过程

本次实验我编写了多个Java多线程程序,包括创建线程、线程同步和死锁。其中,创建线程部分我使用了继承Thread类和实现Runnable 接口两种方式来创建线程,并测试了多个线程之间的并行执行情况;

java语言程序设计实验报告

java语言程序设计实验报告

java语言程序设计实验报告

篇一:Java实验八报告

《Java语言程序设计》实验报告

学生姓名:郭倩

班级:信息112

学号:201152275208

实验地点:经管实验中心证券实验室

指导教师:赵利平

实验日期:

实验环境:Windows 2000+JDK1.6

1. 实验目的

(1)理解子类派生的概念

(2)学习创建子类对象

(3)掌握方法覆盖的使用

2.实验内容

(1)设计三个类:完成实验教材P52页程序清单4-2;

(2)通过编制一个程序来加深对嵌套类、内部类和局部类的理解:完成实验教材P56页程序清单4-3;

2. 实验过程

报告撰写具体要求:上述实验内容要求写出源代码及运行结果。

实验内容(1):

//Polymorphism.

abstract class Student{

final static int CourseNo=3;

String name;

String type;

int[] courses;

String courseGrade;

public Student(String name){

=name;

courses=new int[CourseNo];

courseGrade=null;

}

public abstract void calculateGrade();

public String getName(){

return name;

}

public String getType(){

return type;

}

public String getCourseGrade(){

return courseGrade;

《java程序设计》实验指导书(09高职)

《java程序设计》实验指导书(09高职)

实验一 Java实验环境的建立一、实验目的

1.掌握Java编程环境的搭建过程;

2.掌握Jcreator pro软件的使用方法;

3.能使用Java doc文档。

二、实验内容

1.下载并安装JDK1.6,配置JDK环境变量;

2.下载Javadoc压缩包并解压在JDK安装路径下;

3.下载Jcreator pro 4.0并安装和配置使用环境;

4.使用实验环境运行书中实例代码,在屏幕上输出“Hello Java”字符串。

①Java application程序代码如下:

public class HelloJava

{

public static void main(String args[])

{

System.out.println("Hello Java!");

}

}

②Java applet程序代码如下:

import java.awt.*;

public class Hello extends java.applet.Applet

{

public void paint(Graphics g)

{

g.drawString("Hello!",30,30);

}

}

三、试验要求

1、预习试验内容并写出上机报告。

2、实验中出现的问题及实验体会。

实验二 Java语言程序设计训练一、实验目的:

1.输入、输出操作实现原理和方法

2.掌握程序流程控制的实现方法

3.掌握数组的定义和操作方法

二、实验内容

1.计算 Result=1!+2!+3!+ (10)

2.计算1---50之间所有素数的和。

3. 产生10个100之内的随机整数输出,并把这10个数按从小到大的顺序输出。

【实验】java多线程实验报告

【实验】java多线程实验报告

【关键字】实验

java多线程实验报告

篇一:西北农林科技大学java多线程实验报告

实验7 多线程

1.实验目的

(1) 掌握Java多线程的概念和实现方法

(2) 掌握Java多线程的同步问题

2.实验内容

任务一:火车售票

假设有火车票1000张,创建10个线程模拟10个售票点,每个售票点100毫秒买一张票。打印出售票过程,注意使用synchronized确保同一张票只能卖出一次。程序运行结果见左图。

打开Eclipse

Tickets.java

public class Ticket extends Thread {

int ticket =1000; String name =""; public void run(){ while(true){synchronized(name){ if(ticket"第" + Thread.currentThread().getName()+ "售票点卖出了第" + ticket-- + "张票");

}

} }

}} try{ } catch(InterruptedException e){ } Thread.sleep(100);

Test.java

public class Test {

} public static void main(String args[]){} Ticket t = new Ticket(); new Thread(t,"1").start(); new Thread(t,"2").start(); new Thread(t,"3").start(); new Thread(t,"4").start(); new Thread(t,"5").start(); new Thread(t,"6").start(); new Thread(t,"7").start(); new Thread(t,"8").start(); new Thread(t,"9").start(); new Thread(t,"10").start();

java多线程实验报告

java多线程实验报告

java多线程实验报告

一、实验目的

本次实验旨在探究Java多线程编程的原理和技巧,以及如何应用多线程编写高效、稳定、可靠的多线程应用程序。

二、实验环境

本次实验使用的环境为:

硬件:Intel Core i5 2.5 GHz处理器,8GB内存,256GB SSD硬盘

软件:Windows 10操作系统,JDK 1.8开发工具

三、实验步骤

1. 编写并运行多线程程序

2. 对程序进行分析、调试和优化

3. 测试程序的效率和稳定性

4. 记录实验过程和实验结果

5. 撰写实验报告

四、实验过程

1. 编写并运行多线程程序

本次实验编写的多线程程序是一个简单的计时器,程序的主要功能是在控制台上输出1-100的数字,并在输出每一个数字之前暂停一段时间,以模拟实际应用中的处理等待。具体代码如下:

public class MyThread extends Thread {

private int delay;

private int count;

public MyThread(int delay, int count) {

this.delay = delay;

this.count = count;

}

@Override

public void run() {

for (int i = 1; i <= count; i++) {

try {

Thread.sleep(delay);

} catch (InterruptedException e) {

e.printStackTrace();

}

System.out.println(i);

操作系统课程设计实验报告

操作系统课程设计实验报告

湖南科技大学计算机科学与工程学院操作系统课程设计报告

学号:

姓名:

班级:

目录

实验一.........................................................

一、实验题目.............................................

二、实验目的.............................................

三、总体设计.............................................

一、实验题目

二、实验目的.............................................

三、总体设计.............................................

四、详细设计.............................................

五、实验结果与分析.......................................

六、小结与心得体会.......................................

实验四.........................................................

一、实验题目.............................................

二、实验目的.............................................

操作系统实验教案(打印版)

操作系统实验教案(打印版)

《操作系统原理》

实验教案(基于Windows2000/XP平台)

讲授人:徐旭

安排授课时间:2012-2013(二)

授课对象:12计科专升本

实验项目列表

实验一多线程的创建与撤销

实验二线程的同步

实验三线程的互斥

实验四生产者-消费者问题

实验五进程通信

实验六动态链接库的建立和调试

实验七页面置换算法模拟

实验八文件的三种传输模式及性能比较实验九磁盘的读写

附录部分(可扩充)

附录1 读者-写者问题

附录2 梨子苹果之PV操作

附录3 命名管道编程规范

附录4 DLL编程规范

实验一线程的创建与撤销

一、实验目的

通过本实验熟悉Windows系统提供的线程创建与撤销等API系统调用,掌握Windows 系统环境下线程的创建与撤销方法。

二、实验内容

1. 熟悉开发环境Visual C++ 6.0;

2. Windows系统环境下线程的创建与撤销方法;

3.编程:在主线程中调用CreateThread( )创建1个子线程,并在子线程中显示类似“Thread is running !”等字样。

三、实验准备知识

相关的API函数的函数原型:

1. 线程创建函数HANDLE CreateThread();

HANDLE CreateThread(

LPSECURITY_ATTRIBUTES lpThreadAttributes, // pointer to security attributes DWORD dwStackSize, // initial thread stack size LPTHREAD_START_ROUTINE lpStartAddress, // pointer to thread function

8-实验八Java多线程操作(实验报告内容)

8-实验八Java多线程操作(实验报告内容)

8-实验八Java多线程操作(实验报告内容)

实验八 Java多线程操作

(实验报告)

一、目的

1.掌握Java多线程操作。

二、实验内容

启动线程,线程休眠,线程同步,等待和唤醒

三、实验环境

JDK1.6+dos环境

四、实验原理

通过案例掌握多线程操作。

五、实验步骤

1、设计一个线程操作类,要求可以产生三个线程对象,并可以分别设置三个线程的休眠时间,如下所示:

线程A,休眠10秒

线程B,休眠20秒

线程C,休眠30秒

2、生产者与消费者问题,生产者生产一台电脑,消费者马上将生产出的电脑取走。

六、实验小结

1、class MyThread implements Runnable{

String name;

int time;

public MyThread(String name,int time){

/doc/0713104097.html,=name;

this.time=time;

}

public void run(){

try{

Thread.sleep(this.time);

}

catch(Exception e){

}

System.out.println(/doc/0713104097.html, +"线程,休眠"+this.time/1000+"秒");

}

}

public class Demo08{

public static void main(String args[]){

MyThread mt1=new MyThread("线程A",10000);

MyThread mt2=new MyThread("线程B",20000);

java 实验八 多线程 实验报告

java 实验八 多线程 实验报告

实验八多线程

实验目标:

(1)掌握使用Thread的子类创建线程;掌握实现Runable接口来实现多线程;

(2)掌握线程之间的数据共享;

(3)掌握线程之间的同步方法;

(4)掌握线程之间的通信方法。

实验任务:

1、选择答题(请将答案标成红色,如(AB)):

1.下面关于线程的说法正确的是( ABD )。

A)Java 支持多线程机制。

B)一个线程创建并启动后,它将执行自己的run()方法,如果通过派生Thread类实现多线程,则需要在子类中重新定义run()方法,把需要执行的代码写run()方法中;如果通过实现Runnable接口实现多线程,则要编写run()方法的方法体。

C)要在程序中实现多线程,必须导入Thread类: import ng.Thread;

D)一个程序中的主类不是Thread的子类,该类也没有实现Runnable接口,则这个主类运行是不能控制主线程的休眠。

2.如果程序中创建了两个线程,一个的优先级是Thread.MAX_PRIORITY,另一个的优先级是正常的默认优先级,下列陈述哪个是对的?( A)

A)正常优先级的线程不运行,直到拥有最高优先级的线程停止运行。

B)即使拥有最高优先级的线程结束运行,正常优先级的线程也不会运行。

C)正常优先级的线程优先运行。

D)上述说法都不对。

3.下面哪个是Runnable接口中的抽象方法( D)?

A)start B)stop C)yield D)run

4.编译下面的程序,得到的结果是( C)。

public class A implements Runnable {

Java实验1-9

Java实验1-9

2、 各运算符的运算优先级
3、 程序的复合结构以及变量的使用范围。
4、 选择语句,哪些具有嵌套关系?
5、 while 和 do while 的区Baidu Nhomakorabea。
实验二 Java 的输入和输出及流程控制语句练习
实验目的:掌握 Java 数据的输入输出的实现及流程控制语句的使用。 实验内容: 1、 输入矩形的长和宽,计算矩形的周长和面积。
4、设计一个矩形类,包含计算举行周长和面积的方法,并写测试用例计算两边分别为 4 和 10、8 和 12.3
的矩形的面积和周长。
思考题:
1、 包的作用、创建和使用。
2、 Classpath 的作用? 3、 Java 中继承机制。 4、 如果类的属性定义成了静态的,类中的方法是否需要修改,如何修改,在测试用例中有几种方法可访
2、编写一个方法,利用选择排序按由小到大的顺序实现一维数组的排序,并验证方法。
3、实现求阶乘的方法,并利用该方法求解 2!+3!+5!+9! 4、利用命令行参数输入两个整数,求它们的和与积。 思考题:
1、 类和对象的关系?对象的创建。
2、 访问控制修饰符有哪些?其作用是什么?
实验四 类和对象
实验目的:理解 Java 语言面向对象编程的基本思想,掌握类的封装方法和对象的创建,掌 握构造方法的定义和使用,了解访问控制符的权限,掌握 OOP 方式设计程序的方法。 实验内容: 1、编写程序,设计一个类,该类中包含一个整型的属性和两个方法(获取和设置属性的值),并编写测

JAVA语言程序设计实验报告

JAVA语言程序设计实验报告

实验一、安装JDK并熟悉java的运行环境实验二、基本语法练习

实验三、面向对象编程实验(4)

实验四、异常处理实验

实验五、小应用程序实验

实验六、图形图像实验

实验七、GUI(图形用户接口)实验(4)

实验八、多线程实验

实验九、输入输出流实验(4)

实验十、数据库应用实验(4)

实验一、安装JDK并熟悉java的运行环境

一、实验目的

熟悉JA V A的运行环境及学习简单的编程。

二、预习内容

安装工具软件的基本方法。

三、实验设备与环境

装有JA V A语言工具软件(Eclipse )的微机若干

四、实验内容

安装Eclipse及JA V A的核心编译程序J2SDK。

1、打开Eclipse的安装盘安装Eclipse。

2、在相同目录下安装J2SDK。

3、打开Eclipse软件对J2SDK文件进行配置。

4、编写一应用程序,在屏幕上显示“HELLO WORLD”和爱心标志。

Pulic class Hello

{

public static void main(String args[])

{

//在屏幕上显示“HELLO WORLD”和爱心标志

}

}

5、编写一小程序实现上述功能:在屏幕上显示“HELLO WORLD”和爱心标志。

实验结果

五、注意事项

⒈认真填写实验报告

⒉遵守实验室各项制度,服从实验指导教师的安排

⒊按规定的时间完成实验

六、说明

本次实验建议学时数2学时

七、实验总结与体会

实验二、基本语法练习

一、实验目的

⒈熟悉Java的基本语法

⒉编写应用程序接收命令行参数

⒊编写应用程序接收用户从键盘的输入

⒋掌握字符串与数组的基本方法

Java语言基础实验报告

Java语言基础实验报告

浙江大学城市学院实验报告

课程名称面向对象程序设计

实验项目名称 Java语言基础实验

学生姓名专业班级学号

一. 实验目的和要求

1. 掌握Java语言的基本数据类型、字符串、数组

2. 掌握Java语言的运算符、表达式、语句

3.能够编写Java应用程序

二. 实验内容

1. 局部变量与final变量实验

2. 基本数据类型与转换实验

3. 算术运算的精度问题实验

4. 移位运算实验

5. 运算赋值实验

6. 短路逻辑运算实验

7. 编程实验:输出Unicode特定区间的字符。

8. 编程实验:分析输入的数字

三. 实验结果与分析(可将程序运行结果截屏,也可分析运行结果)

1. 局部变量与final变量实验。编写以下程序,并回答问题。

public class LocalVariableInitExample {

public static void main(String[] args) {

int a ;

System.out.print(a);

final int b = 100;

b++;

System.out.print(b);

}

}

(1)程序的错误

1、System.out.print(a);出错,局部变量a没有进行过初始化或赋值

2、b++;出错,不能对终态局部变量 b 赋值。它必须为空白,并且不使用复合赋值

(2)改正方式

public class LocalVariableInitExample {

public static void main(String[] args) {

int a=10 ;

System.out.print(a);

Java实验八-Applet类及应用源码及截图

Java实验八-Applet类及应用源码及截图

//实验八第一题源程序

import java.applet.Applet;

import java.awt.*;

public class CC extends Applet

{

private int init = 0;

private int start = 0;

private int destroy = 0;

private int paint = 0;

public void init(){init++;}

public void start(){start++;}

public void destroy(){destroy++;}

public void paint(Graphics g)

{

paint++;

int x0=20,y0=150;

g.drawLine(x0,y0,x0+200,y0);

g.drawLine(x0,y0,x0,50);

g.drawString("init()",40,165);

g.drawString("start()",90,165);

g.drawString("destroy()",130,165);

g.drawString("paint()",190,165);

g.setColor(Color.red);

g.fillRect(25,150-init,40,init);

g.setColor(Color.blue);

g.fillRect(75,150-start,40,start);

g.setColor(Color.yellow);

g.fillRect(125,150-destroy,40,destroy);

实验八 结构体(答案)

实验八 结构体(答案)
printf("请输入要查找学生的姓名:");
scanf("%s",n);
loc=search(s,n,5);
if(loc>=0)
printf("要找学生的电话号码是:%s\n",s[loc].tel);
else printf("该学生不存在\n");
}
6.用函数调用方式编写程序,要求实现:
(1)在main函数中读入10名学生记录,存入结构数组s,调用fun函数,把平均成绩和分数最低的学生记录输出到屏幕上。
fun( a,&m);
printf("***** THE RESULT *****\n");
printf(" The lowest : %s ,%d\n", m.num, m.s);
}
2.(sy8-2.c)学生的记录由学生成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是:把分数最低的学生数据放在h所指的数组中,注意:分数最低的学生可能不止一个,函数返回分数最低的学生的人数。
{t=bb[j];bb[j]=bb[j+1];bb[j+1]=t;}
}
void main()
{int i;
struct book b[5]={"计算机",23,"音乐",15,"语文",24,"数学",21,"英语",20};

java多线程实验报告

java多线程实验报告

java多线程实验报告

Java多线程实验报告。

一、实验目的。

本实验旨在通过编写Java程序,实现多线程的基本操作,包括线程的创建、启动、暂停、恢复和终止,以及线程间的通信和同步,从而加深对Java多线程编程的理解和掌握。

二、实验内容。

1. 线程的创建和启动。

在Java中,可以通过继承Thread类或实现Runnable接口来创建线程。在本次实验中,我们将通过这两种方式来创建线程,并分别启动它们,观察线程的执行情况。

2. 线程的暂停和恢复。

线程的暂停和恢复可以通过调用Thread类的suspend()和resume()方法来实现。我们将在实验中使用这两个方法来暂停和恢复线程的执行,以及分析其可能存在的问题和风险。

3. 线程的终止。

线程的终止可以通过调用Thread类的stop()方法来实现。然而,stop()方法已经被废弃,因为它可能导致线程的不安全状态。在本次实验中,我们将探讨更安全的线程终止方式,并进行实际操作。

4. 线程间的通信和同步。

在多线程编程中,线程间的通信和同步是非常重要的。我们将通过使用wait()、notify()和notifyAll()方法,以及synchronized关键字,来实现线程间的通信和同步,从而避免出现竞态条件和死锁等问题。

三、实验过程。

1. 创建并启动线程。

首先,我们创建一个继承自Thread类的子类,并重写其run()方法,在run()方

法中编写线程的执行逻辑。然后,我们创建一个实现了Runnable接口的类,并实

现其run()方法。最后,我们分别创建这两种线程,并启动它们,观察它们的执行

《面向对象程序设计》实验指导书

《面向对象程序设计》实验指导书

《⾯向对象程序设计》实验指导书

《⾯向对象程序设计》实验指导书

郭⽟柱

⼴东商学院信息学院

⼆0⼀0 年⼗⼆⽉

⽬录

实验⼀ Java基础实验

实验⼆ Java⾯向对象特性试验--Java中的类、对象和⽅法实验三类的继承、多态、接⼝、访问控制符与修饰符

实验四 Java资源及其利⽤

实验五 Java 语⾔的异常处理

实验六输⼊输出流

实验七图形⽤户界⾯设计

实验⼋ Java Applet及多线程试验

附录1 实验报告格式

实验⼀ Java 基础实验

⼀、实验⽬的与要求

1. 学习编写简单的Java 程序。

2. 学习掌握Java 基本数据类型及其基本运算。

3. 学习掌握Java 的基本流程控制语句。

⼆、相关知识

1. 了解JDK 的⼯作环境,以及如何使⽤JDK 进⾏编程。

2. 熟悉集成软件 eclipse

3.5及其使⽤。

⼆、实验内容

1. 编写Hello.java 程序并运⾏。

2. ⽤Java 语⾔编写⼀个应⽤程序在屏幕上输出1000之内的素数。

3. ⼀个数如果恰好等于它的因⼦之和,这个数就称为“完数”,⽐如28=1+2+4+7+14。编写⼀个应⽤程序在屏幕上输出1000之内的完数。

4. 求满⾜1!+2!+3!+ …+n!≤9999的最⼤整数n 。

5. ⼀个三位的整数如果它的各位数字的⽴⽅之和等于这个三位数,就称此数为⽔仙花数,⽐如 3

3

3

173371++=,编写⼀个应⽤程序在屏幕上输出所有⽔仙花数。 6. 下⾯程序的输出结果是什么?

实验⼆ Java⾯向对象特性试验-Java中的类、对象和⽅法

⼀、实验⽬的与要求

1. 掌握类的定义和使⽤。

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

实验八 Java多线程操作

(实验报告)

一、目的

1.掌握Java多线程操作。

二、实验内容

启动线程,线程休眠,线程同步,等待和唤醒

三、实验环境

JDK1.6+dos环境

四、实验原理

通过案例掌握多线程操作。

五、实验步骤

1、设计一个线程操作类,要求可以产生三个线程对象,并可以分

别设置三个线程的休眠时间,如下所示:

线程A,休眠10秒

线程B,休眠20秒

线程C,休眠30秒

2、生产者与消费者问题,生产者生产一台电脑,消费者马上将生

产出的电脑取走。

六、实验小结

1、class MyThread implements Runnable{

String name;

int time;

public MyThread(String name,int time){

=name;

this.time=time;

}

public void run(){

try{

Thread.sleep(this.time);

}

catch(Exception e){

}

System.out.println(+"线程,休眠"+this.time/1000+"秒");

}

}

public class Demo08{

public static void main(String args[]){

MyThread mt1=new MyThread("线程A",10000);

MyThread mt2=new MyThread("线程B",20000);

MyThread mt3=new MyThread("线程C",30000);

new Thread(mt1).start();

new Thread(mt2).start();

new Thread(mt3).start();

}

}

//生产电脑和搬运电脑

class Computer{

private String name;

public static int sum=0;

private boolean flag=true;

public Computer(String name){

=name;

}

public synchronized void set(){ //生产电脑if(!flag){

try{

super.wait();

}

catch(Exception e){

e.printStackTrace();

}

}

sum=sum+1;

System.out.println("第"+sum+"台"+name+"电脑被生产");

flag=false;

super.notify();

}

public synchronized void get(){ //搬走电脑

if(flag){

try{

super.wait();

}

catch(Exception e){

e.printStackTrace();

}

}

System.out.println("第"+sum+"台"+name+"电脑被搬走");

flag=true;

super.notify();

}

}

class Producter implements Runnable{ private Computer c=null;

public Producter(Computer c){

this.c=c;

}

public void run(){

for(int i=0;i<1000;i++){

this.c.set();

}

}

}

class Worker implements Runnable{ private Computer c=null;

public Worker(Computer c){

this.c=c;

}

public void run(){

for(int i=0;i<1000;i++){

this.c.get();

}

}

}

public class Test{

public static void main(String args[]){ Computer c=new Computer("联想");

Producter p=new Producter(c);

Worker w=new Worker(c);

new Thread(p).start();

new Thread(w).start();

}

}

相关文档
最新文档