A multi-threaded program might perform database access using one thread while another thread handles the display. Multithreading is a very powerful feature of the Java language. The downside to writing a multithreaded program is the additional complexity of dealing with the thread model.