public static void main(String[] args) {

		int i, j, csCount;
		int csSize = MATRIX_SIZE / THREADS;
		if (MATRIX_SIZE % THREADS == 0)
			csCount = THREADS;
		else
			csCount = THREADS + 1;

		ReentrantLock[] lock = new ReentrantLock[csCount];
		for (i = 0; i < csCount; i++) {
			lock[i] = new ReentrantLock();
		}
		matrix = new double[MATRIX_SIZE][MATRIX_SIZE];
		ThreadPool.tr = new Thread[THREADS];

		for (i = 0; i < MATRIX_SIZE; i++) {
			for (j = 0; j < MATRIX_SIZE; j++) {
				matrix[i][j] = 2 * (Math.random() - 0.5) * MAX_VAL;
			}
		}
		printMatrix();
		
		//Start Timer Here
		Timer.setStartTime();
		Gauss r = new Gauss(matrix, MATRIX_SIZE, 0, lock, csSize,
				THREADS);
		ThreadPool.tr[0] = new Thread(r);
		ThreadPool.tr[0].start();

	}