1.4 KiB
Question 1
1- This is the output for the program:
Calling run()
Running in: main
Calling start()
Running in: Thread-2
2- t1.run() will run the method from the thread that it is called from, which is main here. It does not create any new thread.
calling t2.start() will create a new thread (which is named thread-2 here).
Question 2
1- This is the output for the program:
Main thread ends.
This happens because when the main thread is done and there is no other User thread running, then all of the Daemon threads will terminate.
2- If you remove that line, the thread becomes a User thread (the default).
Behavior: The program will print "Main thread ends." However, the JVM will not exit. It will keep running for approximately 10 seconds until the DaemonRunnable finishes all 20 iterations of its loop. Only after the run() method of that thread completes will the JVM shut down.
3- Some real-life use cases of daemon threads are background tasks that need to be automatically closed after the main application shuts down like garbage collectors and spell checkers or auto saves.
Question 3
1- This is the output for the program:
Thread is running using a ...!
2- It is called a lambda expression.
3- This is much more concise. But lacks the maintainability which class method provides.