All Downloads are FREE. Search and download functionalities are using the official Maven repository.

jadex.micro.producerconsumer.ConsumerAgent Maven / Gradle / Ivy

The newest version!
package jadex.micro.producerconsumer;

import jadex.core.IComponent;
import jadex.execution.IExecutionFeature;
import jadex.future.FutureBlockingQueue;
import jadex.micro.annotation.Agent;
import jadex.model.annotation.OnStart;

@Agent
public class ConsumerAgent 
{
	protected FutureBlockingQueue queue;
	protected long maxdelay;
	
	public ConsumerAgent(FutureBlockingQueue queue)
	{
		this(queue, 2000);
	}
	
	public ConsumerAgent(FutureBlockingQueue queue, long maxdelay)
	{
		this.queue = queue;
		this.maxdelay = maxdelay;
	}
	
	@OnStart
	protected void start(IComponent agent)
	{
		while(true)
		{
			System.out.println(agent.getId()+" fetch item");
			
			R elem = queue.dequeue().get();
			
			System.out.println(agent.getId()+" received item: "+elem);
			
			long delay = (long)(Math.random()*maxdelay);
			System.out.println(agent.getId()+" waiting: "+delay);
			
			agent.getFeature(IExecutionFeature.class).waitForDelay(delay).get();
		}
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy