java代码-----实现4个人打牌游戏的相关代码。线程
2024-10-12 22:27:15
总结:发送线程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();
}
}
}
}
最新文章
- js-JavaScript高级程序设计学习笔记11
- 将编码从GB2312转成UTF-8的方法汇总(从前台、程序、数据库)
- C# 开发XML Web Service与Java开发WebService
- Java 反编译工具几枚(class转java)
- acm数据结构整理
- 4种字符串匹配算法:KMP(下)
- Qt部件学习之-烧鹅
- Servlet的学习之Request请求对象(1)
- java去全半角空格,trim(), replaceAll("; +";,";";),replaceAll(";\\s*";, ";";), replaceAll("; | ";, ";";)
- svn 安装网站
- python的数据类型及操作
- python每天一个小练习-列表元素非唯一
- 静默安装Oracle12.2数据库
- Maven使用(一)—— Maven的安装与全局配置
- Docker 集群Swarm创建和Swarm Web管理
- LeetCode 520 Detect Capital 解题报告
- SmtpClient SSL 发送邮件异常排查
- 浏览器Quirksmode(怪异模式)与CSS1compat
- redis windows 版配置使用
- css 自定义checkbox多选复选框样式
热门文章
- ParentNodes、childNodes、children之间的区别
- RabbitMQ(1) 核心概念
- Sql Server- 性能优化辅助指标SET STATISTICS TIME ON和SET STATISTICS IO ON
- css hover伪类选择器与JQuery hover()方法
- jfc在jsp页面画图,不将图片存在服务器端,只存入会话session(可用)
- CUDA Samples: Streams' usage
- 2PC
- iOS-----GitHub上比较齐全的iOS 工具和App
- Git使用总结(廖雪峰git)
- 【剑指offer】第一个只出现一次的字符