面向对象程序设计实验七 线程课件

来源:网络收集 时间:2025-07-12 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xuecool-com或QQ:370150219 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

实验七 线程

云南大学信息学院 面向对象技术导论 java程序设计大学教程 实验

【开发语言及实现平台或实验环境】

Windows2000 或XP,JDK1.6与Jcreator4.0 【实验目的】

1. 理解线程的基本概念、优先级、生命周期等。

2. 掌握线程的一般创建与使用方法(Thread类与Runnable接口)。 3. 了解线程间的通信、多线程的同步等编程机制。 【实验要求】

1. 运行上课讲解的例子; 2. 完成下列实验内容。 【实验内容】

一、读懂并执行下列程序,理解Java中的多线程机制。

1. 运行下面的程序,理解用创建Thread子类的方法实现多线程。

class SimpleThread extends Thread {

public SimpleThread(String str) { super(str); }

public void run() {

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

System.out.println(i + \ try {

sleep((int)(Math.random() * 1000)); } catch (InterruptedException e) {} }

System.out.println(\ } }

public class TwoThreadsTest {

public static void main (String[] args) {

new SimpleThread(\ new SimpleThread(\ } } 问题:

(1) 程序的运行结果和功能分别是什么?

(2) 如果程序中去掉try-catch语句,程序是否仍能正常运行?

(3) Thread子类是如何实现多线程机制的? (4) 如果希望执行三个线程,再显示“Go to Shanghai ”,程序如何修改?比较显示次序,是否相同。为什么会有这样的现象? 答:

1:运行结果:

功能:创建两个线程并打印做检测

2:去掉后程序能够正常运行但是运行的速度加快,即线程没有了等待时间。

3:在编写复杂程序时相关的类可能已经继承了某个基类,而Java不支持多继承,在这种情况下,便需要通过实现Runnable接口来生成多线程 用到Thread类的构造方法

public Thread(Runnable target);

//构造一个新的线程对象,以一个实现Runnable接口的类的对象为参数。默认名为Thread-n,n是从0开始递增的整数。

4:首先在函数TwoThreadsTest添加一个线程即是添加语句new SimpleThread(\Qinghai \和System.out.println(“Go to Shanghai”);即可由于学校的机器是四核的无法完成下面的操作!

2. 运行下面的程序,理解用实现Runnable接口的方法实现多线程。

//这是一个时钟Applet,它显示当前时间并逐秒进行更新。 import java.awt.*; import java.applet.*; import java.util.*;

public class Clock extends Applet implements Runnable{ Thread clockThread;

public void start(){

if(clockThread==null){

clockThread=new Thread(this,\ clockThread.start(); } }

public void run(){

while(clockThread !=null){ repaint(); try{

clockThread.sleep(1000); }catch(InterruptedException e){} } }

public void paint(Graphics g){ Date now=new Date();

g.drawString(now.getHours()+\

+now.getSeconds(),5,10);

}

public void stop(){

clockThread.stop(); clockThread=null; } } 问题:

(1) 在什么情况下一般要通过实现runnable接口实现线程机制? (2) 程序的运行结果和功能分别是什么?

(3) Runnable接口是如何实现多线程机制的?

(4) 程序中是通过什么方法如何实现逐秒更新显示时间的? 答:(1)在编写复杂程序时相关的类可能已经继承了某个基类,而Java不支持多继承,在这种情况下,便需要通过实现Runnable接口来生成多线程

(2)结果:

功能:该程序是一个时钟Applet,它显示当前时间并逐秒进行更新。 (3)定义一个实现java.lang.Runnable接口的类,并在该类中定义Runnable接口的run()方法,同样,该run()方法是线程执行的起点。 (4)程序通过调用clockThread.sleep()方法通过控改变sleep()里面的内容来实现逐秒更新显示时间。

3. 运行下面的程序,理解线程的同步。

//程序使用同步块 class Callme{ void call(String msg){ System.out.print(\ try{ Thread.sleep(1000); } catch (InterruptedException e){ System.out.println(\ } System.out.println(\ } }

class Caller implements Runnable{ String msg; Callme target; Thread t; public Caller(Callme targ, String s){ target = targ; msg = s; t = new Thread(this); t.start(); } //同步调用call()方法

public void run(){ synchronized(target){//同步块 target.call(msg); } } }

class Java2{ public static void main(String args[]){ Callme target = new Callme(); Caller ob1 = new Caller(target,\ Caller ob2 = new Caller(target,\ Caller ob3 = new Caller(target,\ //等待线程结束 try{ ob1.t.join(); ob2.t.join(); ob3.t.join(); } catch(InterruptedException e){ System.out.println(\ } } } 问题:

(1) 程序的运行结果和功能分别是什么? (2) 程序中如何实现线程的同步?

(3) 去掉程序中的synchronized关键字,运行结果如何? 答:

1:运行结果

功能:创建三个线程,检测线程同步。

2 碰到多个线程对同一资源进行访问的情况,这时,就需要协调: 每个对象都只有一个“锁”与之相连,利用多线程对其的争夺可实现线程间的互斥操作。

当线程A获得了一个对象的锁后,线程B必须等待线程A完成规定的操作、并释放出锁后,才能获得该对象的锁,并执行线程B中的操作。

利用synchronized首先判断对象的锁是否在,如果在就获得锁,然后就可以执行紧随其后的代码段;如果对象的锁不在(已被其他线程拿走),就进入等待状态,直到获得锁 3:去掉关键字后无运行结果。运行结果为空,三个线程均不被执行。

4. 运行下面的程序,理解线程间的通信。

import java.lang.Runnable;

百度搜索“70edu”或“70教育网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,70教育网,提供经典综合文库面向对象程序设计实验七 线程课件在线全文阅读。

面向对象程序设计实验七 线程课件.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.70edu.com/wenku/397294.html(转载请注明文章来源)
Copyright © 2020-2025 70教育网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:370150219 邮箱:370150219@qq.com
苏ICP备16052595号-17
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:7 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:xuecool-com QQ:370150219