Java application that solves given sudoku using multithreading.
Algorithm consists of two phases:
Phase 1 - Filling every cell with possibilities
Phase 2 - Updating solved cells for every column, row and box
However not every sudoku can be solved by this approach alone. For more advanced sudoku's when there are no more sole candidates algorithm finds a cell with least number of possibilities and start new thread for each possibility.
Finally, one thread will find a solution and make callback to main thread.
Project made for Codecool programming course.