This is a simple project for my Operating Systems class. It uses Threads in Java to optimize the matrix multiplication algorithm between two square matrices. We used N threads, where N is the order of the two matrices, to reduce the theoretical complexity from O(N^3) to O(N^2). A presentation is also included that further analyzes the differences in speed between the two versions of the algorithm. The numbers that populate the matrices are chosen uniformly at random between 1 and 100.