From 965ab5d19171d425c91b0489c4b4737e3be2a3d3 Mon Sep 17 00:00:00 2001 From: Saeed Jamali Date: Fri, 5 Jun 2026 20:54:37 +0330 Subject: [PATCH] Complete Report.md with answers to questions --- Report.md | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 Report.md diff --git a/Report.md b/Report.md new file mode 100644 index 0000000..d7497ac --- /dev/null +++ b/Report.md @@ -0,0 +1,43 @@ +**Question 1** + +1- This is the output for the program: +``` Text +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: +``` Text +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: +``` Text +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. \ No newline at end of file