public static void doMultiThreadTest(String host, int txnPerSec, int threads, int runTimeSec) {
		int eachUnitCount = (int) (txnPerSec/threads + 0.5);
		

		final AgeTest at[] = new AgeTest[threads];
		for(int i=0;i<threads;i++) {
			at[i] = new AgeTest("Test-"+i, host, eachUnitCount, runTimeSec);
			at[i].setUp();
		}

		Thread threadPool[] = new Thread[threads];
		for(int i=0;i<threads;i++) {
			final int myi = i;
			threadPool[i] = new Thread() {
				public void run() {
					at[myi].test();
				}
			};
		}

		System.out.println("=============");
		System.out.println("Txn/Sec/Thread: "+eachUnitCount);
		System.out.println("Total Threads: "+threads);
		System.out.println("Host List: "+host);
		System.out.println("ETC: "+new Date(System.currentTimeMillis()+runTimeSec*1000));
		System.out.println("Starting....");
		System.out.println("=============");
		long stime = System.currentTimeMillis();
		for(int i=0;i<threads;i++) {
			threadPool[i].start();
		}

		long timeoutCount = 0;
		for(int i=0;i<threads;i++) {
			try {
				threadPool[i].join();
			} catch (InterruptedException ex) {
				Logger.getLogger(AgeTest.class.getName()).log(Level.SEVERE, null, ex);
			}
			timeoutCount = timeoutCount + at[i].timeouts;
		}
		long etime = System.currentTimeMillis();

		float ttime = etime-stime;
		double atime = ttime/(eachUnitCount*threads*runTimeSec);

		System.out.println("\nDone....");
		System.out.println("=============");

		System.out.println("=============");
		System.out.println("Host List: "+host);
		System.out.println("Total Txn: "+eachUnitCount*threads*runTimeSec);
		System.out.println("Total Threads: "+threads);
		System.out.println("Txn/Sec/Thread: "+eachUnitCount);
		System.out.println("Total Time: "+ttime+ " ms");
		System.out.println("Timeouts: "+timeoutCount);
		System.out.println("Avg Time: "+atime+ " ms");
		System.out.println("=============");
		
		try {
			Thread.sleep(1000);
		} catch (InterruptedException ex) {
			Logger.getLogger(AgeTest.class.getName()).log(Level.SEVERE, null, ex);
		}

		for(int i=0;i<threads;i++) {
			at[i].tearDown();
		}
	}