Java多线程程序设计.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Java多线程程序设计概要

实验报告 课程名称 面向对象程序设计 实验名称 实验七 多线程程序设计 日期 2016-11-11 学生学号 姓名 班级 实验目的: 通过本次实验,要求学生能进一步掌握多线程程序设计的操作方法。 实验条件: 电脑一台、能上网查阅资料。 1.输入例7.9的发牌程序源代码,理解代码的真正含义。并尝试对程序进行如下修改: (1)修改发牌程序,取消取牌程序之间的次序关系,运行结果会怎样? (2)将玩牌人数修改为3人,运行结果会怎样? (3)修改发牌线程,发送由1~52组成的一个随机数序列。 源代码: import java.util.*; import java.awt.*; import javax.swing.*; class CardBuffer //加互斥锁的缓冲区 { private int value; //共享变量,临界资源 private boolean isEmpty=true; //value是否空的信号量 private int order=0; //信号量,约定取牌线程的次序 private int number; //人数 CardBuffer(int number) { this.number = number; } synchronized void put(int i) { // if (!this.isEmpty) //运行错,为什么?? while (!this.isEmpty) //当value不空时,等待 try { this.wait(); //等待 } catch(InterruptedException ex) {} this.value=i; //当value空时,value获得值 this.isEmpty=false; //设置value为不空状态 this.notifyAll(); //唤醒所有其他等待线程 } synchronized int get(int order) //order是取牌线程约定的次序 { while (isEmpty) //取消取牌线程之间的次序关系,看看会怎样。 while (this.isEmpty || (this.order!=order)) //当value空或取牌次序不符时等待 try { this.wait(); } catch(InterruptedException ex) {} this.isEmpty=true; //设置value为空状态,并返回值 this.notifyAll(); this.order = (this.order+1) % this.number; //加1使取牌次序轮转 return this.value; } } class SendCardThread extends Thread //发牌线程类 { private CardBuffer cardbuffer; //存放牌的缓冲区(加互斥锁) private int cardMax; //cardMax指定最大牌值,牌值为1~cardMax private int number; //人数 //构造方法,cardbuffer指定存放牌的缓冲区;cardMax指定最大牌值,牌值为1~cardMax;number指定人数 public SendCardThread(CardBuffer cardbuffer, int cardMax, int number) { this.cardbuffer

文档评论(0)

6663144 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档