Java实验五线程

Java实验五线程
Java实验五线程

实验五线程

一实验要求

1、理解进程和线程概念;

2、掌握创建、管理和控制Java线程对象的方法;

3、了解并发执行的多线程存在的各种关系

二实验内容

1、使用线程对象或Timer定时器制作数字时钟标签组件,显示当前日期和时间,每秒刷新,将该标签添加到框架窗口。

import java.awt.FlowLayout;

import java.text.SimpleDateFormat;//简单日期格式类

import java.util.Locate;

import java.util.Timer;//一种工具,线程用其安排以后在后台线程中执行的任务

import java.util.TimerTask;

import java.swing.JLabel;

public class ShizhongJFrame extends JFrame{

{

Public ShizhongJFrame(){

JFrame f=new JFrame(“数字时钟”);

f.setLayout(new FlowLayout());

f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

f.setSize(200,70);

final JLable lable=new JLable;

final SimpleDateFormat format=new SimpleDateFormat(“H:m:s”,Locate.CHINA);

f.add(lable);

Timer time=new Timer();

time.scheduleAtFixedRate(new TimerTask(){

Public void run(){

Label.setText(format.format(new Date(System.currentTimeMillis())));

}

},0,1000);

f.setVisible(true);

}

Public staic void main(String arg[]){

New ShizhogJFrame();

}

}

三实验内容中遇到的问题、解决方法和体会。

有些小难啊,对于多线程的运用还是不熟悉,应该加强对此方面的掌握。

16.JAVA网络编程实验 多线程

Java网络编程实验报告 (实验六) 学号:姓名: 实验项目名称:多线程教师评分: 一、实验目的 (1)了解线程的概念。 (2)学习简单的多线程编程。 二、预习内容及要求(要求写出预习内容) 1.进程和线程的概念 进程是程序一次动态执行的过程,对应从代码加载、执行到执行结束这样一个完整的过程,也是进程自身从产生、发展到消亡的过程。 线程是比进程更小的执行单元,一个进程在执行过程中,可以产生多个线程。每个线程都有自身的产生、执行和消亡的过程。 2.线程的状态与生命周期 ●新建:当一个Thread类或其子类的对象被声明并创建时,新生的线程对象处于新建状态。此 时它已经有了相应的内存空间和其他资源。 ●运行:线程创建之后就具备了运行的条件,一旦轮到它来享用CPU资源时,即JVM将CPU 使用权切换给该线程时,此线程的就可以脱离创建它的主线程独立开始自己的生命周期了(即 run方法执行的过程)。 ●中断:有4种原因的中断,CPU资源从当前线程切换给其他线程、执行了sleep(int millsecond) 方法、执行了wait()方法、进入阻塞状态。 ●死亡:run方法结束。 3.线程的创建 在Java语言中,与线程支持密切相关的是https://www.360docs.net/doc/1419224221.html,ng.Thread类和https://www.360docs.net/doc/1419224221.html,ng.Runnable接口。Runnable 接口定义很简单,只有一个run方法。任何一个类如果希望自己的实例能够以线程的形式执行,都可以来实现Runnable接口。 继承Thread类和实现Runnable接口,都可以用来创建Thread对象,效果上并没有什么不同。继承Thread类的方法很明显的缺点就是这个类不能再继承其他的类了,而实现Runnable接口不会有这个麻烦。 另外,在继承Thread类的代码中,this其实就是指当前正在运行的线程对象,如果使用实现Runnable 接口的方式,要得到当前正在执行的线程,需要使用Thread.currentThread()方法。 线程创建后仅仅是占有了内存资源,在JVM管理的线程中还没有这个线程,此线程必须调用start ()方法(从父类继承的方法)通知JVM,这样JVM就会知道又有一个新一个线程排队等候切换了。

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){ https://www.360docs.net/doc/1419224221.html,=name; this.time=time; } public void run(){ try{ Thread.sleep(this.time); } catch(Exception e){ } System.out.println(https://www.360docs.net/doc/1419224221.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); MyThread mt3=new MyThread("线程C",30000);

高级java实验三

实验三:基于多线程的Socket通信 班级:计科F1202 姓名:黄浩翔学号:201216010110 实验目的:通过将Socket通信和多线程的知识结合应用,掌握基于多线程的通信设计方法。 实验内容:创建客户端Socket;创建服务器端Socket;建立基于多线程的服务器段监听和数据处理机制;Socket的启动和管理。 实验步骤: //服务端 package基于多线程Socket通信; import https://www.360docs.net/doc/1419224221.html,.ServerSocket; import https://www.360docs.net/doc/1419224221.html,.Socket; public class MultiServer { public static void main(String args[]) { ServerSocket server=null; int count=0; boolean listening =true; try{ try{ server =new ServerSocket(6000);

System.out.println("服务器启动:"); } catch (Exception e){ System.out.println("不能接听服务"); } while(listening){ Socket socket=server.accept(); count++; System.out.println("Accept "+count+" Client!"); Thread read = new ReadThread(socket,"[client"+count+"]"); read.start(); } server.close(); } catch (Exception e){ System.out.println("Error:" + e); } } } //多线程 package基于多线程Socket通信; import java.io.BufferedReader;

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(); 任务二:银行存款 假设某家银行,它可接受顾客的汇款,每做一次汇款,便可计算出汇款的总额。现有两个顾客,每人都分3次,每次100元将钱到入。试编写一个程序,模拟实际作业。 程序如下: classCBank { private static int sum=0; public static void add(int n){ inttmp=sum; tmp=tmp+n;// 累加汇款总额 try{ Thread.sleep((int)(10000*Math.random())); //

Java实验五线程

实验五线程 一实验要求 1、理解进程和线程概念; 2、掌握创建、管理和控制Java线程对象的方法; 3、了解并发执行的多线程存在的各种关系 二实验内容 1、使用线程对象或Timer定时器制作数字时钟标签组件,显示当前日期和时间,每秒刷新,将该标签添加到框架窗口。 import java.awt.FlowLayout; import java.text.SimpleDateFormat;//简单日期格式类 import java.util.Locate; import java.util.Timer;//一种工具,线程用其安排以后在后台线程中执行的任务 import java.util.TimerTask; import java.swing.JLabel; public class ShizhongJFrame extends JFrame{ { Public ShizhongJFrame(){ JFrame f=new JFrame(“数字时钟”); f.setLayout(new FlowLayout()); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.setSize(200,70); final JLable lable=new JLable; final SimpleDateFormat format=new SimpleDateFormat(“H:m:s”,Locate.CHINA); f.add(lable); Timer time=new Timer(); time.scheduleAtFixedRate(new TimerTask(){ Public void run(){ Label.setText(format.format(new Date(System.currentTimeMillis()))); } },0,1000); f.setVisible(true); } Public staic void main(String arg[]){ New ShizhogJFrame(); } } 三实验内容中遇到的问题、解决方法和体会。

Java多线程实验报告

实验报告 课程名称: Java语言程序设计 姓名: 学号: 班级: 数学与计算机科学学院

数学与计算机科学学院实验报告实验名称:多线程 指导教师:日期:

if (isPrime) count++; } System.out.println(st + "~" + en + "之间共有" + count + "个质数"); } public static void main(String[] args) { UseThread thread1 = new UseThread(2, 1000); UseThread thread2 = new UseThread(1000, 2000); thread1.start(); thread2.start(); } } 第2题代码: public class Experiment14_2 { public static void main(String[] args) { MyThread t1 = new MyThread("T1"); MyThread t2 = new MyThread("T2"); t1.start(); t2.start(); System.out.println("活动线程数:" + Thread.activeCount()); System.out.println("main()运行完毕"); } } class MyThread extends Thread { public MyThread(String s) { super(s); } public void run() { for (int i = 1; i <= 3; i++) { System.out.println(getName() + "第" + i + "次运行"); try { sleep((int) (Math.random() * 100)); } catch (InterruptedException e) { e.printStackTrace(); } } System.out.println(getName() + "结束"); } }

实验6:多线程实验 (1)

成绩: 面向对象原理与Java实践课程实验报告 实验6:多线程实验 姓名林浩强 班级网络14-2 学号 14034460220 实验地点软件实验室 实验时间 2016.6.7 指导教师姚明

一、实验目的: ●了解线程调度机制 ●理解线程同步机制 ●掌握线程设计方法 二、实验要求: ●掌握线程创建的方法 ●掌握线程的基本控制方法 ●掌握线程间的同步控制方法 三、实验内容: 1、随机生成1万个整数,利用线程技术计算两种不同排序算法对这些数排序的运行时间。 2、有一水塘,可实现注水和排水操作。当水塘无水时不能对其再进行排水操作,当水塘水满时不能对其再进行注水操作。创建水塘类Pond、注水线程Injection和排水线程Drain,假设注水线程可以在10分钟内将水塘注满水,排水线程可以在10分钟内将水塘的水全排出。试实现水塘的注水和排水过程。 四、设计思路: 首先,第一个实验的需求是随机生成10000个整数并且按两种算法排序,并利用线程的方式计算排序时间。我用的排序算法是冒泡排序和选择排序法,在排序的前后分别用System 类的CurrentTimeMillis()方法获取当前时间的毫秒值,作差求出排序所用的时间。最后在SortDemo类中启动线程即可。、 第二个实验的需求是实现注水和排水的操作,题目中指出“当水塘无水时不能对其再进行排水操作,当水塘水满时不能对其再进行注水操作”,所以我采用了线程的等待唤醒机制来实现。首先在Pond类中声明一个标记变量flag,把注水和排水的操作封装成为功能并加了同步关键字synchronize,方法中运用了同步唤醒机制实现依次的一次一个输出。然后在Injection类和Drain类中调用同步方法即可。最后,在PondDemo中启动线程即可。 五、程序源代码: 实验题目1: package java6_Test; import java.util.Random; public class Sort1 extends Thread { private Object obj = new Object(); //重写run方法 public void run() { //计时开始 long l1 = System.currentTimeMillis(); //用Object类对象设置同步锁 synchronized (obj) { //随机生成10000个数并用相应长度数组来储存这些数

JAVA线程程序设计(小时钟)实验报告(附完整代码)

线程程序设计 一、课题内容和要求 内容:设计和编写一个编写一个指针式时钟程序,应用线程实现时钟的走动。 要求:本实验旨在通过实验,培养学生将JAVA 线程的相关知识点(包括线程调度,线程同步等)有机结合并加以综合应用,在实验中设计多线程程序的能力。 二、设计思路分析 class Clock:一个指针式时钟的主类 class Layout: 添加窗口和时钟组件 class ClockPaint:定义时钟组件 三、概要设计 public class Clock extends JFrame { public static void main(String[] s) ; } class Layout extends JFrame { public Layout(); } class ClockPaint extends JPanel implements Runnable { int x, y, r; int h, m, s; double rad = Math.PI / 180; public ClockPaint(int x, int y, int r); public void paint(Graphics g); public void run(); } 时钟的绘制:

运行时钟: 四、详细设计 import java.awt.*; import javax.swing.*; import java.util.*; public class Clock extends JFrame { public static void main(String[] s) { new Layout(); } } class Layout extends JFrame {// 添加窗口和时钟组件public Layout() { ClockPaint cp = new ClockPaint(20, 20, 70); add(cp);

java多线程实现调度

重庆交通大学综合性设计性实验报告 实验项目名称:进程调度(先来先服务) 实验项目性质: JAVA多线程 实验所属课程: JAVA程序设计 实验室(中心):语音大楼 8 楼 801 班级:软件专业 2012级2班 姓名:尚亚* 学号: 631206050216 指导教师:杨 实验完成时间: 2014 年 11 月 25 日

一、实验目的 1、理解程序、线程和进程的概念; 2、理解多线程的概念; 3、掌握线程的各种状态; 4、熟练使用Thread类创建线程; 5、熟练使用线程各种方法; 6、掌握线程的调度及线程同步的实现原理。 二、实验内容及要求 进程调度是处理机管理的核心内容。本实验要求采用最高优先数优先的调度算法(即把处理机分配给优先数最高的进程)和先来先服务算法编写和调试一个简单的进程调度程序。通过本实验可以加深理解有关进程控制块、进程队列的概念。并体会了优先数和先来先服务调度算法的具体实施办法。 用JA V A语言编写和调试一个进程调度程序,以加深对进程的概念及进程调度算法的理解。做一个能够直观体现多个进程时,CPU 是怎样调度就绪队列中的进程(按照先来先服务的原则)。

三、实验设备 PC机,windows7,eclipse。 四、设计方案 ㈠设计主要思想 (1)要模拟进程的调度算法,必须先体现处进程及系统资源。 (2)要体现先来先服务的算法,就必须表现出当有一个进程进入CPU时其他进程不能进入,并在就绪队列中排队。本实验建立了四个圆移动的线程表示作业调度,用圆在表示就绪队列的方框中停留表示进程在就绪队列中排队。 (3)当有一个圆移动到表示CPU的范围内时,让其它线程在就绪队列中排队,当CPU内无进程时,先来的圆先移动,以表示CPU 对进程的调度。 ㈡设计的主要步骤 (1)建立四个不同颜色的圆移动的线程,表示对四个进程的调度。 (2)当有一个表示进程的圆到达表示CPU范围内时,通过让其它几个圆停留在表示就绪队列的方框范围内,表示进程在就绪队列中排成队列。 (3)当第一个先到达的进程释放CPU,在排成队列的几个圆中选择先到达的圆,使其移动表示对先来的进程进行调度,直到所有的圆移动完毕。 五、主要代码 import java.awt.Font; import java.awt.event.*;

实验五 Java图形界面及多线程

实验五图形界面及多线程 【实验目的】 一、掌握Jpanel的使用方法; 二、掌握JAVA简单图形界面的设计; 三、掌握JAVA多线程控制。 【实验内容】 一、在一个Jpanel中显示一个小球,当点击鼠标时,开始移动小球;当小球撞到Jpanel的边框时,小球将反弹回去继续移动。小球用一个线程来控制其移动; 二、每点击一次鼠标,增加一个移动的小球,最多产生20个小球,随机选择小球的颜色; 三、增加功能,当两个小球相撞时,它们将各自反弹。 【实验结果】 //小球类 import java.awt.Color; import java.awt.Point; import java.awt.Rectangle; import java.awt.Shape; import java.awt.geom.Ellipse2D; import java.util.Random; public class Ball { private double x; private double y; private double xR=30; private double yR=30; private double xMove; private double yMove; private Color color; private Ellipse2D shape; private static Random random=new Random(); public Ball(){ color=new Color(random.nextInt(256),random.nextInt(256),random.nextInt(256)); xMove=Math.cos(random.nextDouble()*6.24)*10;

Java多线程实验报告

实验4:Java多线程 实验时间:实验地点: 一、实验目的及要求 (1)了解线程的概念。 (2)学习简单的多线程编程。 二、实验设备环境及要求 三、实验任务 (1)阅读给定的Java Application程序,按要求回答问题并写出运行结果。 (2)按要求编写一个Java Application程序,并编译、运行这个程序。 四、实验内容与步骤 1.输入下面的Java Application程序,运行该程序,并简要分析程序的运行结果。 1:class SimpleThread extends Thread { 2:public SimpleThread(String str) { 3:super(str); //调用其父类的构造方法 4:} 5:public void run() { //重写run方法 6:for (int i = 0; i < 10; i++) { 7:System.out.println(i + " " + getName()); 8://打印次数和线程的名字 9:try { 10:sleep((int)(Math.random() * 1000)); 11://线程睡眠,把控制权交出去 12:} 13:catch (InterruptedException e) { } 14:} 15:System.out.println("DONE! " + getName()); 16://线程执行结束 17:} 18:}

1:public class TwoThreadsTest { 2:public static void main (String args[]) { 3:new SimpleThread("First").start(); 4://第一个线程的名字为First 5:new SimpleThread("Second").start(); 6://第二个线程的名字为Second 7:} 8:} 2.编写程序,将上面多线程程序用Runnable接口来实现。 class SimpleThread implements Runnable{ public void run(){ for (int i = 0; i < 10; i++){ System.out.println(i + " " + Thread.currentThread().getName()); try { Thread.sleep((int)(Math.random() * 1000)); //线程睡眠,把控制权交出去 } catch (InterruptedException e) { } } System.out.println("DONE! " + Thread.currentThread().getName()); //线程执行结束 } } public class Test { public static void main (String args[]) { /*Thread t1=new Thread("First"); //第一个线程的名字为First Thread t2=new Thread("Second"); //第二个线程的名字为Second t1.start(); t2.start();*/ new Thread(new SimpleThread(),"First").start(); new Thread(new SimpleThread(),"Second").start() } }

JAVA多线程简单案例.

第一页在 Java 程序中使用多线程要比在 C 或 C++ 中容易得多,这是因为Java 编程语言提供了语言级的支持。本文通过简单的编程示例来说明 Java 程序中的多线程是多么直观。读完本文以后,用户应该能够编写简单的多线程程序。 为什么会排队等待?下面的这个简单的 Java 程序完成四项不相关的任务。这样的程序有单个控制线程,控制在这四个任务之间线性地移动。此外,因为所需的资源 ? 打印机、磁盘、数据库和显示屏 -- 由于硬件和软件的限制都有内在的潜伏时间,所以每项任务都包含明显的等待时间。因此,程序在访问数据库之前必须等待打印机完成打印文件的任务,等等。如果您正在等待程序的完成,则这是对计算资源和您的时间的一种拙劣使用。改进此程序的一种方法是使它成为多线程的。四项不相关的任务class myclass { static public void main(String args[] { print_a_file(; manipulate_another_file(; access_database(; draw_picture_on_screen(; } } 在本例中,每项任务在开始之前必须等待前一项任务完成,即使所涉及的任务毫不相关也是这样。但是,在现实生活中,我们经常使用多线程模型。我们在处理某些任务的同时也可以让孩子、配偶和父母完成别的任务。例如,我在写信的同时可能打发我的儿子去邮局买邮票。用软件术语来说,这称为多个控制(或执行)线程。可以用两种不同的方法来获得多个控制线程:多个进程在大多数操作系统中都可以创建多个进程。当一个程序启动时,它可以为即将开始的每项任务创建一个进程,并允许它们同时运行。当一个程序因等待网络访问或用户输入而被阻塞时,另一个程序还可以运行,这样就增加了资源利用率。但是,按照这种方式创建每个进程要付出一定的代价:设置一个进程要占用相当一部分处理器时间和内存资源。而且,大多数操作系统不允许进程访问其他进程的内存空间。因此,进程间的通信很不方便,并且也不会将它自己提供给容易的编程模型。线程线程也称为轻型进程 (LWP。因为线程只能在单个进程的作用域内活动,所以创建线程比创建进程要廉价得多。这样,因为线程允许协作和数据交换,并且在计算资源方面非常廉价,所以线程比进程更可取。线程需要操作系统的支持,因此不是所有的机器都提供线程。Java 编程语言,作为相当新的一种语言,已将线程支持与语言本身合为一体,这样就对线程提供了强健的支持。使用 Java 编程语言实现线程Jav

Java多线程实验报告详解

西安邮电大学 (计算机学院) 课内实验报告 实验名称:多线程 专业名称:计算机科学与技术 班级:计科1405班 学生姓名:高宏伟 学号:04141152 指导教师:刘霞林 实验日期:2016.12.08

一、实验目的 1.线程的概念、线程的生命周期。 2.多线程的编程:继承Thread类与使用Runnable接口。 3.使用多线程机制实现动画。 二、实验要求 1. 掌握利用JA V A语言编写多线程程序的方法。 2. 掌握线程的调度方法。 3. 掌握多线程环境中GUI程序的编写方法。 三、实验内容 (一)汉字打字练习。 ?实验要求: 编写一个Java应用程序,在主线程中再创建一个Frame类型的窗口,在该窗口中再创建1个线程giveWord。线程giveWord每隔2秒钟给出一个汉字,用户使用一种 汉字输入法将该汉字输入到文本框中。 ?程序模板: WordThread.java import java.awt.*; public class WordThread extends Thread { char word; int k=19968; Label com; WordThread(Label com) { https://www.360docs.net/doc/1419224221.html,=com; } public void run() { k=19968; while(true) { word=(char)k; com.setText(""+word); try{ 【代码1】//调用sleep方法使得线程中断6000豪秒 } catch(InterruptedException e){} k++; if(k>=29968) k=19968; }

java实验报告7

一.实验目的 (1)了解Thread类并创建线程 (2)了解Runnable接口并创建线程 (3)学习多线程的同时运行 (4)了解守护线程 (5)了解线程同步 二.实验软件环境 jdk1.6.0_18、windows 7 三.实验内容 (1)编写一个java程序,定义一个ThreadA类继承Thread类,在main()方法中创建ThreadA 类的三个实例,执行这些线程 package https://www.360docs.net/doc/1419224221.html,.javaoo.class070120; //ThreadA.java class ThreadA extends Thread { int count=1; int num; public ThreadA(int newNum) { num=newNum; System.out.println("创建线程"+num); } 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 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 https://www.360docs.net/doc/1419224221.html,.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() { while(true) { System.out.println("线程"+num+":计数"+count); count++; if(count==3) break; } } public static void main(String args[]) {

实验三 Java线程编程

实验三Java多线程编程 一、实验目的 在java开发环境下,掌握Java多线程技术的用法。 二、实验环境 微机,软件MyEclipse,JDK1.5以上版本即可。 三、实验内容 1)利用Thread子类或者Runnable接口编写线程类,实现多线程程序。 2)理解多线程程序的运行原理,分析多线程程序的运行过程。 四、实验要求 1. 请用Runnable接口来实现例题3-----LeftAndRight.java。(满分为A/2) 2. 参照例题5,要求有三个线程,student1,student2和teacher,首先输入教师和两个学生的姓名。其中student1准备睡10分钟后开始上课,student2准备睡一个小时以后上课,teacher在输出5句“上课”后,吵醒睡眠的线程student1,student1被吵醒后,负责吵醒正在休眠的student2。参考下面的运行结果截图。(满分:A) 图3-1 3. 分析例题7---- 猜数游戏GuessNumberGame.java中存在的问题,根据题中的分析和解决问题的提示,修改例题7,解决其中存在的问题。使其运行效果如下图所示:(满分为A)

图3-2 4. 编程实现如下功能:一个线程进行阶乘和的运算,(如1 !+2 !+3 !+……+1000 !),而另一个线程则每个一段时间读取上个线程的运算结果。 图3-3 5. 模仿本章案例,编程实现一个带滚动字幕和时钟显示的小字典:(满分为2A) 1)用户在左侧文本框中输入英文单词并按下enter键时,另一个文本框显示其汉语介绍;字典中能够翻译的单词如下{boy,girl,man,woman},对应的中文翻译为{男孩,女孩,男人,女人}; 2)当用户在左侧文本框中输入“fast”后,能够加速滚动字幕的显示;输入“stop”后,滚动字幕停止;输入“restart”后,滚动字幕重新开始滚动; 3)当用户在左侧文本框中输入“start clock”后,开始显示系统时钟;当用户输入“stop clock”后,时钟终止显示。 4)用户在左侧文本框中输入其他英文单词时,另一个文本框提示说“没有对应的中文”。

Java实验报告

中南大学 Java语言实验报告 学生姓名:L 专业班级:计算机科学与技术教师:季桂树 学院:信息科学与工程学院 2018年1月 1

目录 第1章 Java语言概述 (3) 第2章 Java数据类型与表达式 (6) 第3章流程控制语句 (11) 第4章数组和方法 (17) 第5章类与对象 (25) 第6章继承与多态 (29) 第7章常用数据类型和处理类 (35) 第8章抽象类和接口 (40) 第9章异常处理 (45) 第10章 Applet编程与Java绘图 (50) 第11章图形用户界面编程基础 (54) 第12章多线程 (58) 第13章流式输入输出与文件处理 (62) 第14章 Java泛型与收集API (67) 第15章高级图形界面程序 (74) 第16章 Java的网络编程 (78) 第17章 JDBC技术和数据库应用 (81) 2

第1章Java语言概述 实验目的 (1)掌握Java应用程序和Java Applet程序的调试步骤。 (2)了解Java程序的基本组成结构。 (3)了解字符方式和图形方式下数据的输出方法。 实验内容 1.样例调试 基础训练1编写应用程序输出如下菜单。 **************** * 1.求圆面积* * 2.求圆周长* * 0·退出* **************** 源代码: public class mainspace { public static void main(String args[]){ System.out.println("****************"); System.out.println("* 1.求圆面积*"); System.out.println("* 2.求圆周长*"); System.out.println("* 0.退出*"); System.out.println("****************"); } } 运行结果: 基础训练2 同一文件中含两个类。 3

java实验15 多线程2 - 答案

实验十五多线程(二) 一、实验时间:姓名:学号: 二、实验目的 1、掌握线程之间的通信; 2、理解线程的生命周期; 三、知识点 1、wait()方法; 2、notify()方法; 3、notifyAll()方法; 4、线程状态转换图; 四、实验内容与步骤 1、根据线程的生命周期,画出线程的状态转换图。 2、编写程序实现以下功能:包括两个进程,分别是生产者进程和消费者进程。生产者进程依次提供:(面条,筷子)或(牛排,叉子),要求生产者每次提供食品和餐具后,要告知消费者取走,而消费者取走食品和餐具后,也要告知生产者已经取走,可以继续提供食品和餐具。public class Q { private String food; private String tool; boolean bFull=false; public synchronized void put(String food,String tool){ if(bFull) try{ wait(); } catch(Exception e){ System.out.println(e.getMessage());

} this.food=food; this.tool=tool; bFull=true; notify(); } public synchronized void get(){ if(!bFull){ try{ wait(); } catch(Exception e){ System.out.println(e.getMessage()); } } System.out.println(food+"---->"+tool); bFull=false; notify(); } } 生产者: public class Producer implements Runnable{ Q q; public Producer(Q q){ this.q=q; } public void run(){ int i=0; while(true){ if(i==0) q.put("面条", "筷子"); else q.put("牛排", "叉子"); i=(i+1)%2; } } } 消费者: public class Consumer implements Runnable { Q q; public Consumer(Q q){ this.q=q; } public void run() { while(true){

java 实验八 多线程 实验报告

实验八多线程 实验目标: (1)掌握使用Thread的子类创建线程;掌握实现Runable接口来实现多线程; (2)掌握线程之间的数据共享; (3)掌握线程之间的同步方法; (4)掌握线程之间的通信方法。 实验任务: 1、选择答题(请将答案标成红色,如(AB)): 1.下面关于线程的说法正确的是(ABD )。 A)Java 支持多线程机制。 B)一个线程创建并启动后,它将执行自己的run()方法,如果通过派生Thread类实现多线程,则需要在子类中重新定义run()方法,把需要执行的代码写run()方法中;如果通过实现Runnable接口实现多线程,则要编写run()方法的方法体。 C)要在程序中实现多线程,必须导入Thread类: import https://www.360docs.net/doc/1419224221.html,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 { public void run () { System.out.println("OK."); } public static void main (String[] args) { Thread Th=new Thread (new A()); Th.start(); } } A)程序不能编译,产生异常。 B)程序能编译运行,但没有任何结果输出。 C)程序能编译运行,输出结果:OK.。 D)上面说法都不对。 5.为什么处于激活状态的线程可能不是当前正在执行的线程?(BCD ) (备注:激活(unblock):如果阻塞线程的事件发生,则该线程被激活并进入就绪队列。) A)因为已经执行完run()方法。B) 线程正在等待键盘输入。 C)该线程调用了wait()方法。D)该线程正在休眠状态。

多线程实验报告

宁波工程学院电信学院计算机教研室 实验报告 课程名称: 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正在运行!"); } } } 运行结果:

相关文档
最新文档