java 打牌游戏_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();

}

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值