⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hzh.txt

📁 该程序主要完成以下工作: * 1、生成两个发送线程s1
💻 TXT
字号:
package thread.control;

import java.util.ArrayList;
import java.util.Random;

public class DataMain {
	
	
	public static void main(String[] args) {
		
		final int TIMES=4;
		final int M=3,N=5;
		DataSender s1,s2;
		DataReciever r=new DataReciever();
		s1=new DataSender(r,M,M*TIMES);
		s2=new DataSender(r,N,N*TIMES);
		r.start();
		s1.start();
		s2.start();
	}

}

class DataReciever extends Thread{
	
	ArrayList datalist=new ArrayList();	
	final int MAX=10;
	int datanum[]=new int[MAX];  
	int datalength[]=new int[MAX];	
	int datacount[]=new int[MAX];  
	int average[]=new int[MAX];	
	int senderId;
	int size;
	int total;
	volatile int count;	
	
	public DataReciever(){
		
	}
	
	public int connect(int datasize,int maxlength){		
		datanum[senderId]=datasize;
		datalength[senderId]=maxlength;
		total+=maxlength;
		size+=datasize;
		int data[]=new int[datasize];
		datalist.add(data);
		return senderId++;
	}
	
	
	
	public void run(){
		
		int printcount=0;
		int tempcount;
		while(true){	
			
			tempcount=count;
			if ((tempcount%size==0)&& (tempcount>0)) {
				if (printcount!=tempcount){//if (state) {
					//System.out.print("\ncount=" + count);
					//System.out.print("\nsize=" + size);
					printcount=tempcount;
					printResult();
					resetSenders();
					//state = false;
				}
			}
			if (tempcount>=total) break;
		
			
			
		}
	}
	
	public  boolean setData(int id,int data){		
			if (datacount[id]==datanum[id])return false;
			addData(id,data);				
			return true;		
	}
	
	private void addData(int id,int data){
		int temp[]=(int[])datalist.get(id);
		temp[datacount[id]]=data;
		datacount[id]++;
		count++;		
	}
	
	private void printResult(){
		for (int i=0;i<senderId;i++){
			int data[]=(int [])datalist.get(i);
			System.out.println("\n\n Data form sender "+i+" : ");
			for (int j=0;j<datanum[i];j++)
			{	System.out.print(data[j]+" ");
				average[i]+=data[j];				
			}
			average[i]/=datanum[i];
			System.out.println("\n Average : "+average[i]);
		}		
	}
	
	private void resetSenders(){
		for (int i=0;i<senderId;i++){
			datacount[i]=0;
		}
	}

}
class DataSender extends Thread{
	DataReciever dr;
	int id;
	int datasize; 
	int maxlength;
	int count;
	
	public DataSender(DataReciever dr,int datasize,int maxlength) {
		this.dr=dr;		
		this.datasize=datasize;
		this.maxlength=maxlength;
		id=dr.connect(datasize,maxlength);
	}

	public void run() {
		while (count < maxlength) {
			int data = 0xFF&generateData();
			while (!dr.setData(id, data))
				Thread.yield();
			System.out.print(""+id+".<"+data+">.");
			count++;
			
		}
	}

	
	private int generateData() {
		Random r=new java.util.Random();
		
		return r.nextInt();	
		
	}

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -