zoukankan      html  css  js  c++  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("		 Receiver get:" + bf.get());
    			try {
    				sleep(1);
    			} catch (InterruptedException e) {
    				// TODO Auto-generated catch block
    				e.printStackTrace();
    			}
    		}
    	}
    }
    

      

  • 相关阅读:
    推荐一个博客,或许给技术流的自己一些启示
    Boost多线程-替换MFC线程
    Python:Matplotlib 画曲线和柱状图(Code)
    AI:机器人与关键技术--总是被科普
    OnLineML一:关于Jubatus 的简介...
    使用PCL::GPU::遇到问题
    dll文件:关于MFC程序不能定位输入点
    实践:使用FLANN.LSH进行检索
    模式识别两种方法:知识和数据
    几个方便编程的C++特性
  • 原文地址:https://www.cnblogs.com/langlove/p/3488273.html
Copyright © 2011-2022 走看看