threads algorithm