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