public void run(){
		System.out.println("MONITORING THREAD STARTED");
		long st = System.currentTimeMillis();
		//long lasten = st;
		//long lasttotalops = 0;
		boolean alldone;
		do {
			try {
				sleep(_sleepTime);
			} catch (InterruptedException e) {
				// do nothing
			}
			alldone = true;
			int totalops = 0;
			int totalacts = 0;
			// terminate this thread when all the worker threads are done
			for (Thread t : _threads) {
				if (t.getState() != Thread.State.TERMINATED) {
					alldone = false;
				}
				ClientThread ct = (ClientThread) t;
				totalops += ct.getOpsDone();
				totalacts += ct.getActsDone();
			}
			long en = System.currentTimeMillis();
			long interval = en - st;
			double totalThroughputTillNow = 1000.0 * (((double) (totalops)) / ((double) (interval)));
			double totalActThroughputTillNow = 1000.0 * (((double) (totalacts)) / ((double) (interval)));
			//get latency
			/*Vector<Double> latencies = MyMeasurement.getAllLatencies();
			int numSatisfying = 0;
			double expectedLatency = (Double.parseDouble(_props.getProperty(Client.EXPECTED_LATENCY_PROPERTY, Client.EXPECTED_LATENCY_PROPERTY_DEFAULT)))*1000;
			for(int j=0; j<latencies.size(); j++){
				if(latencies.get(j) <= expectedLatency){
					numSatisfying++;
				}
			}*/
			double satisfyingPerc = MyMeasurement.getSatisfyingPerc();
			
			
			System.out.println("MONITOR-THROUGHPUT(SESSIONS/SEC):"+totalThroughputTillNow);
			System.out.println("MONITOR-THROUGHPUT(ACTIONS/SEC):"+totalActThroughputTillNow);
			//System.out.println("MONITOR-SATISFYINGOPS(%):"+(double)(numSatisfying)/latencies.size()*100);
			System.out.println("MONITOR-SATISFYINGOPS(%):"+satisfyingPerc);
		} while (!alldone && !_workload.isStopRequested());
	}//end run