Threads em Multiplicação de Matrizes

Gostaria de saber como inserir uma threads no código abaixo:

É uma matriz 50 x 50, executando a Threads de 10 em 10.

import java.util.Scanner;

public class _20 {

  public static void main(String[] args) {
    Scanner ler = new Scanner(System.in);

    int n = 50; // ordem da matriz quadrada
    int i, j, k, sm;
    int a[][] = new int[n][n];
    int b[][] = new int[n][n];
    int ab[][] = new int[n][n];

// entrada de dados
    System.out.printf("1a. Matriz_________________________\n");
    for (i=0; i<n; i++) {
      System.out.printf("Informe os elementos da %da. linha:\n", (i+1));
      for (j=0; j<n; j++) {
        System.out.printf("a[%d][%d] = ", i, j);
        a[i][j] = ler.nextInt();
      }
      System.out.printf("\n");
    }

    System.out.printf("\n2a. Matriz_________________________\n");
    for (i=0; i<n; i++) {
      System.out.printf("Informe os elementos da %da. linha:\n", (i+1));
      for (j=0; j<n; j++) {
        System.out.printf("b[%d][%d] = ", i, j);
        b[i][j] = ler.nextInt();
      }
      System.out.printf("\n");
    }

// processamento: multiplicando as matrizes de entrada
    for (i=0; i<n; i++) {
      for (j=0; j<n; j++) {
        sm = 0;
        for (k=0; k<n; k++) {
          sm = sm + (a[i][k] * b[k][j]);
        }
        ab[i][j] = sm;
      }
    }

// saida
    System.out.printf("\n1a. Matriz________\n");
    for (i=0; i<n; i++) {
      System.out.printf("%da. linha: ", (i+1));
      for (j=0; j<n; j++) {
        System.out.printf("%d ", a[i][j]);
      }
      System.out.printf("\n");
    }

    System.out.printf("\n2a. Matriz________\n");
    for (i=0; i<n; i++) {
      System.out.printf("%da. linha: ", (i+1));
      for (j=0; j<n; j++) {
        System.out.printf("%d ", b[i][j]);
      }
      System.out.printf("\n");
    }

    System.out.printf("\nProduto___________\n");
    for (i=0; i<n; i++) {
      System.out.printf("%da. linha: ", (i+1));
      for (j=0; j<n; j++) {
        System.out.printf("%d ", ab[i][j]);
      }
      System.out.printf("\n");
    }
  }
}

Você poderia criar uma thread callable que recebe duas matrizes: a linha e a coluna que serão multiplicadas e retorna o escalar. Acho que a melhor maneira seria por aí.