How does multithreading work in Java? Explain how you would prevent thread interference and handle data consistency using concurrency utilities.