java代码-----实现4个人打牌游戏的相关代码。线程
总结:发送线程Sender().和接收线程Receiver()
虽然,这里的Sender()发送线程和Receiver()都有相同的睡眠时间,但是由于线程调度的不确定性,是的发送线程Sender每次发送的数据和接收线程Receiver每次
接收的数据不一样。而我们希望的是发送线程每次发送的数据都能够让接收线程Receiver正确的接收 到,这就必须增加方法的锁定机制。
package com.a.b;
//package com.a.b;
class Buffer2 {// 这里注意java源文件不是Buffer.java(文件名)否则运行出错。根本无法显示
private int value; // 这里java圆文件是任意的,但是绝对不是Buffer
void put(int i) {
value = i;
}
int get() {
return value;// 返回值
}
}
class Sender extends Thread {
// 发送线程
private Buffer bf;
public Sender(Buffer bf) {
this.bf = bf;
}
@Override
public void run() {
for (int i = 1; i < 6; i++) {
bf.put(i);// 这个调用带参的put()方法
System.out.println("Sender put:" + i);
try {
sleep(i);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
public static void main(String[] args) {
Buffer bf2 = new Buffer();// 这个和类名一致。否则报错
(new Sender(bf2)).start();// 这里的Sender这个类的构造方法里本来就有个参数,、、我疑问为什么这里的构造方法
// 调用线程的start()方法不是new一个线程的对象,而是一个类的,你看这个类不是继承了Thread类吗?也就是说它可以继承
// 线程类的属性和方法---------是可以的
(new Receiver(bf2)).start();// 这里的括号没有打上,那么它会调用的是什么方法呢?有什么关系呢?
}
} // 这里不是类的对象吗:
class Receiver2 extends Thread {// 这是个类,和Sender是一样的?
private Buffer bf;
public Receiver2(Buffer bf) {
this.bf = bf;
}
@Override
public void run() {
for (int i = 0; i < 6; i++) {
System.out.println("\t\t Receiver get:" + bf.get());
try {
sleep(1);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
java代码-----实现4个人打牌游戏的相关代码。线程的更多相关文章
- Java太阳系小游戏分析和源代码
Java太阳系小游戏分析和源代码 -20150809 近期看了面向对象的一些知识.然后跟着老师的解说做了一个太阳系各行星绕太阳转的小游戏,来练习巩固一下近期学的知识: 用到知识点:类的继承.方法的重载 ...
- 常用Java API之Ramdom--用代码模拟猜数小游戏
常用Java API之Ramdom Ramdom类用来生成随机数字.使用起来也是三个步骤: 1.导包 import java.util.Random; 2.创建 Random r = new Rand ...
- Java GUI学习,贪吃蛇小游戏
JAVA GUI练习 贪吃蛇小游戏 前几天虽然生病了,但还是跟着狂神学习了GUI的方面,跟着练习了贪吃蛇的小项目,这里有狂神写的源码点我下载,还有我跟着敲的点我下载,嘿嘿,也就注释了下重要的地方,这方 ...
- 用java给html文件添加必要的控制html代码片
这个需求,我估计很多时候都不会用到,但是,我们目前在做一个CMS的系统,在创建页面的时候,需要控制页面各个板块显示的内容来源,这个不是关键,关键是页面内容配置完毕后,如何提交内容,也就是说如何和后台系 ...
- Java 字符编码 ASCII、Unicode、UTF-8、代码点和代码单元
1 ASCII码 统一规定英语字符与二进制位之间的关系.ASCII码一共规定了128个字符的编码.例如,空格“SPACE”是32(二进制00100000),大写字母A是65(二进制01000001). ...
- JAVA文件操作类和文件夹的操作代码示例
JAVA文件操作类和文件夹的操作代码实例,包括读取文本文件内容, 新建目录,多级目录创建,新建文件,有编码方式的文件创建, 删除文件,删除文件夹,删除指定文件夹下所有文件, 复制单个文件,复制整个文件 ...
- java中的静态变量、静态方法与静态代码块详解与初始化顺序
我们知道类的生命周期分为装载.连接.初始化.使用和卸载的五个过程.其中静态代码在类的初始化阶段被初始化. 而非静态代码则在类的使用阶段(也就是实例化一个类的时候)才会被初始化. 静态变量 可以将静 ...
- cucumber java从入门到精通(2)用代码定义步骤
cucumber java从入门到精通(2)用代码定义步骤 上一节里我们定义了feature文件,feature文件就是自然语言描述的用例文件,它有一定的章法,具体的潜规则是: 使用Feature关键 ...
- 3行代码,为QQ轻游戏加上语音互动能力
欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由腾讯游戏云 发表于云+社区专栏 游戏和社交往往有着密不可分的关系,QQ轻游戏就是一款集成在手Q里面的游戏平台,直接通过手Q入口就能随开 ...
随机推荐
- lambda表达式 <二>
概念了解: 1.什么是匿名委托(匿名方法的简单介绍.为什么要用匿名方法) 2.匿名方法的[拉姆达表达式]方法定义 3.匿名方法的调用(匿名方法的参数传递.使用过程中需要注意什么) 什么是匿名方法? 匿 ...
- hdu 6063 RXD and math(快速幂)
RXD and math Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 524288/524288 K (Java/Others)To ...
- iOS 可能用到的三方框架
1.MWPhotoBrowser 第三方图片浏览器 https://github.com/mwaterfall/MWPhotoBrowser 2.SlackTextViewController 强大 ...
- ASP.NET后台怎么输出方法中间调试信息?
后台方法,不止是aspx.cs,而是页面调用的一些其它方法.想调试这些方法,我以前winform都是MessageBox.Show一些中间结果,现在我也想用这种方式.但想想,网页会触发 Message ...
- 收集hive优化解决方案
hive的优化问题1.启动一次JOB尽可能多做事,尽量减少job的数量.能重用就重用,要设计好的模型.2.合理设置reduce个数,reduce个数过多,会造成大量小文件问题.3.使用hive.exe ...
- v-if和v-show小对比
相同点 都可以控制元素的显示与不显示.在判断DOM节点是否要显示. 不同点 1.实现方式 v-if是根据后面的数据的真假判断直接从DOM树上删除或重建元素节点. v-show 只是修改元素的css的样 ...
- HDU 3378
http://acm.hdu.edu.cn/showproblem.php?pid=3378 规则去玩三国杀就理解了 纯模拟 注意的点:有已经分出胜负但还在杀的情况出现,所以要每次杀操作前判断是否分出 ...
- Openflow1.3
Openflow1.3 协议标准
- learn go anonymous function
package main // 参考文档: // https://github.com/Unknwon/the-way-to-go_ZH_CN/blob/master/eBook/06.8.md im ...
- js工具类的封装
common.js原生js实现的大多工具方法都将放在common文件中 布局rem.js,vue开发时,我们只需要将rem.js再main.js中import 引入即可 (function(win, ...