I was able to solve this one correctly but I can't say I understood what I did too well. So each thread is modifying the array, adding plus 1 to the current index, which initially starts out as 0 for each element. Why, then, after 5 threads going over it, is the value equal to 1? Shouldn't each element be 4? And what's wrong with locking "this" instead of the "values" array?