1. Make it so that the result is calculated for all the array elements, WITHOUT using Thread.sleep in the main(String args) method. 2. Correct the synchronized block so that the values array is filled with 1s
You must be signed in to leave a comment
23 August 2021, 17:59
this task makes absolutely no sense. they ask you to correct the code so the array is filled with '1's but the "right solution" doesn't do that.
2 March, 22:02
I think they mean the array from 1-100 which gets checked in the main method. Index will be 0 because the first thread uses incrementCount(); first on the count variable which is 0 at that moment and only then will increment the Index of the array with values[getCount()]++. You have to look carefully i overlooked that at first too and was wondering why no array out of bounds exception is thrown when the 2. thread starts. But the array got initialized at new int with 105 places and because we have a do while loop in the run method thread 2, 3, 4 will each increment once the index, and  before stopping due to the while condition. Index will stay 0 because no thread touches it.
4 August 2019, 22:25
Help! I don't understand why I should synchronized `values` but not syncrhonized `Solution.values` ? `values` is a static variable in class Solution and all counters are actually accessing the same `Solution.values`, then why the answer is just `values` ? Thank you!!
3 August 2020, 06:00
this is the same. although Solution.values is legal we are calling it from within a Solution class so we are in the scope of this variable. using Solution.values instead of values is superfluous.