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();
    			}
    		}
    	}
    }
    

      

  • 相关阅读:
    使用UpdatePanel后如果在Render中篡改输出的html代码问题解决方案
    .net项目的二次开发解决方案
    (转)C#开源资源大汇总
    实例讲解PostSharp(一)
    实例讲解PostSharp(二)
    10个故事看员工管理和激励(转)
    用日志记录LINQ中的所有增删改的SQL语句的方法
    IT管理人才必备的十大能力(转)
    揭示常见的重构误区(转)
    利用传入的Type类型来调用范型方法的解决方案
  • 原文地址:https://www.cnblogs.com/langlove/p/3488273.html
Copyright © 2011-2022 走看看