First and foremost, Selenium/WebDriver/Selenium Grid
would not handle multi-threading for you, its your underlying test framework (TestNG/JUnit/Cucumber
etc.) would handle it. WebDriver is not thread-safe, If you are running tests in parallel, you would need to make sure your code is thread-safe.
Going back to your question, the code you wrote would overwrite on the same screenshot file. You would need to copy the file somewhere else with a different name. I would suggest you to prefix the screenshot file with a time stamp with millisecond precision and then copy the screenshot file. This way you would have three unique different screenshots for three different browser instances. This worked for me in the past.
File scrFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
String file_name = "screenshot_"+ Add system_time with millisecond precision
FileUtils.copyFile(scrFile, new File(file_name));