protected void multiply(int rows) throws MatrixIndexOutOfBoundsException {
        //temporary variable
        double temp = 0;
        //It is one-tenth of the number of rows of the matrix
        int stepProgress = rowsA / 10;
        //this quantity of rows which the thread takes
        int step = matrixA.getStepRow();
        //limiter
        int range = rows + step;
        for (int i = rows; i < range; i++) {
            if ((rowsA >= 1000) && (i % stepProgress == 0)) {
                //Multiplication progress
                System.out.println("Multiplication progress " + i / stepProgress * 10 + "%.");
            }
            for (int j = 0; j < colsB; j++) {
                for (int k = 0; k < colsA; k++) {
                    temp += matrixA.getValue(i, k) * matrixB.getValue(k, j);
                }
                matrixC.setValue(i, j, temp);
                temp = 0;
            }
        }

    }