public Double call() {
    double cell = 0.0;
    // ThreadSleep.nonBlockingSleep(1);
    // ThreadSleep.blockingSleep(1);
    for (int k = 0; k < matrix2.getDimensions(); k++) {
      cell += matrix1.getValue(i, k) * matrix2.getValue(k, j);
    }

    return cell;
  }
 private static Matrix readMatrix(List<String> lines, int matrixDimension) {
   Matrix matrix = new Matrix(matrixDimension);
   for (int iline = 0; iline < matrixDimension; iline++) {
     String line = lines.get(iline);
     String[] columns = line.split(" +");
     for (int icolumn = 0; icolumn < matrixDimension; icolumn++) {
       String cell = columns[icolumn];
       matrix.setValue(Double.parseDouble(cell), iline, icolumn);
     }
   }
   return matrix;
 }