package com.ssc.nga.jess;
import jess.*;

public class JessMultiThreadAssert {

	public static void main(String[] args) {
		
		Rete rete = new Rete();	
		OddThread odd = new OddThread(rete);
		EvenThread even = new EvenThread(rete);
		
		try{
			rete.batch("JessMultipleAssertRun.clp");
		}catch (Exception e){
			e.printStackTrace();
		}
		even.start();
		odd.start();		
	}

}
/**
 * assert facts with even number, from 2 to 10
 * */
class EvenThread extends Thread
{
	private Rete rete = null;
	public EvenThread(Rete rete){
		this.rete = rete;
	}
	public void run(){
		try{
			long i=2;
			while(i<=10){
				rete.eval("(assert (item1 (value "+i+")))");
				rete.run();
				i+=2;
			}			
		}catch (Exception e){
			e.printStackTrace();
		}
	}
}
/**
 * assert facts with odd number, from 1 to 9
 * */
class OddThread extends Thread
{
	private Rete rete = null;
	public OddThread(Rete rete){
		this.rete = rete;
	}
	public void run(){
		try{
			long i=1;
			while(i<=10){
				rete.eval("(assert (item1 (value "+i+")))");
				rete.run();
				i+=2;
			}			
		}catch (Exception e){
			e.printStackTrace();
		}
	}
}

