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

📄 eventstream.java

📁 RFID复杂事件处理系统的研究实验
💻 JAVA
字号:
package test1;


public class EventStream implements Runnable{
	private int typenum=6;
	private double []percentage=new double[typenum];
	private double []averageInterval=new double[typenum];					//平均的延时,以毫秒为单位
	private int eventnum;
	private EventReceiver eventReceiver;
	
	
	public EventStream(EventReceiver eventReceiver)
	{
		this.eventReceiver=eventReceiver;
	}
	public void produce()
	{
		char type;		
		while(eventnum!=0)
		{
		long tic =System.nanoTime()/1000000;
		double p=Math.random();
		//System.out.println(p);
		
		if(p<percentage[0])
		{
			type='A';
		}else{
			if(p<percentage[1]+percentage[0])
			{
				type='B';
			}else{
				if(p<percentage[2]+percentage[1]+percentage[0])
				{
					type='C';
				}else{
					if(p<1-percentage[1]-percentage[0])
					{
						type='D';
					}else{
						if(p<1-percentage[0])
						{
							type='E';
						}else{
							type='F';
						}
					}
				}
			}
		}
		long t =System.nanoTime()/1000000; 
		P_Event pe=new P_Event(0,t,type);
		eventReceiver.acceptEvent(pe);
		//System.out.println("~~~~~~~~~~~~~~~~~~~~");
		//System.out.println("新到来的事件e:id="+pe.getid()+" t="+pe.gettimestamp()+" type="+pe.gettype());
		//System.out.println("~~~~~~~~~~~~~~~~~~~~");
		eventnum--;
		long toc =System.nanoTime()/1000000;
		
        //		等一段时间
		
		double waitingTime = MyRandom.exponent(averageInterval[type-'A']);
		sleep(waitingTime-toc+tic);
		
		}
		
		/*long t =0;
		double waitingTime=0;
		char type;		
		while(eventnum!=0)
		{
	
		double p=Math.random();
		//System.out.println(p);
		
		if(p<percentage[0])
		{
			type='A';
		}else{
			if(p<percentage[1]+percentage[0])
			{
				type='B';
			}else{
				if(p<percentage[2]+percentage[1]+percentage[0])
				{
					type='C';
				}else{
					if(p<1-percentage[1]-percentage[0])
					{
						type='D';
					}else{
						if(p<1-percentage[0])
						{
							type='E';
						}else{
							type='F';
						}
					}
				}
			}
		}
		//System.nanoTime()/1000000;
		
		
		t=(long) (t+waitingTime);
		P_Event pe=new P_Event(0,t,type);
		eventReceiver.acceptEvent(pe);
		//System.out.println("~~~~~~~~~~~~~~~~~~~~");
		//System.out.println("新到来的事件e:id="+pe.getid()+" t="+pe.gettimestamp()+" type="+pe.gettype());
		//System.out.println("~~~~~~~~~~~~~~~~~~~~");
		eventnum--;
		//
	
		waitingTime = MyRandom.exponent(averageInterval[type-'A']);
        //		等一段时间
		
		
		//sleep(waitingTime-toc+tic);
		
		}*/
		
		
	}
	
	public static void sleep(double milliTime)
	{
		if (milliTime<=0) return;
		long milli = (long)milliTime;
		int nano = (int)((milliTime-(long)milliTime) * 1000000);
		try
		{
			Thread.sleep(milli,nano);
		}
		catch (InterruptedException e)
		{
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	
	
	public void run()
	{
		produce();
	}
	public double[] getPercentage() {
		return percentage;
	}
	public void setPercentage(int i,double percentage) {
		this.percentage[i] = percentage;
	}
	public void setEventnum(int eventnum) {
		this.eventnum = eventnum;
	}
	public void setAverageInterval(int i,double averageInterval) {
		this.averageInterval[i] = averageInterval;
	}
	

}

⌨️ 快捷键说明

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