import
java.util.Arrays;
public
class
GfGParallelMatrixMultiplication
{
public
static
int
[][] multiply(
int
[][] matrix1,
int
[][] matrix2)
{
int
numRow1 = matrix1.length;
int
numCol1 = matrix1[
0
].length;
int
numCol2 = matrix2[
0
].length;
int
[][] result =
new
int
[numRow1][numCol2];
Arrays.parallelSetAll(result, i -> multiplyRow(matrix1, matrix2, i));
return
result;
}
private
static
int
[] multiplyRow(
int
[][] matrix1,
int
[][] matrix2,
int
row)
{
int
numCol1 = matrix1[
0
].length;
int
numCol2 = matrix2[
0
].length;
int
[] resultRow =
new
int
[numCol2];
for
(
int
j =
0
; j < numCol2; j++)
{
for
(
int
k =
0
; k < numCol1; k++)
{
resultRow[j] += matrix1[row][k] * matrix2[k][j];
}
}
return
resultRow;
}
public
static
void
main(String[] args) {
int
[][] matrix1 = {
{
11
,
45
,
5
},
{
38
,
23
,
13
}
};
int
[][] matrix2 = {
{
18
,
5
},
{
14
,
10
},
{
25
,
19
}
};
int
[][] result = multiply(matrix1, matrix2);
for
(
int
[] row : result) {
System.out.println(Arrays.toString(row));
}
}
}