diff --git a/Report.md b/Report.md new file mode 100644 index 0000000..3abf6e5 --- /dev/null +++ b/Report.md @@ -0,0 +1,82 @@ +# Advanced Programing - 8 Report + +## Theoretical Questions Answers + +--- + +## 1. start() vs run() +### Output: + +-Calling run() +-Running in: main +-Calling start() +-Running in: Thread-2 + +### Explanation +When calling "t1.run()" directly, the run method executes in the current thread (main). +When calling "t2.start()" , java creates a new thread and executes run() in that thread (Thread-2). + +### Difference: + +|start()|run()| +|-------|-----| +|Creates new thread|No new thread| +|Executes run() in new thread|Executed like nurmal method| +|Can only be called once|Can be called multiple times| + +--- + +## Deamon Threads + +### Output(with demon): + +-Main thread ends +-Deamon thread running... +-(Program terminates quickly) + +### Output(without demon): + +-Main thread ends. +-Deamon thread running... +-(20 times) + +### Explanation +-A daemon thread is a background thread that does NOT prevent the JVM from exiting. +When the main thread (non-daemon) finishes, +the JVM checks if there are any non-daemon threads still running. +Since only the daemon thread remains, +the JVM terminates immediately without waiting for the daemon thread to complete its 20 iterations. + +-Without setDaemon(true), the thread becomes a user thread (non-daemon) . +User threads prevent the JVM from exiting until they complete. +Therefore, the JVM waits for the thread to finish all 20 iterations before terminating the program. + +--- + +### Real-life use cases: +1. Garbage Collector (GC) +2. Auto-save features +3. Background logging +4. Session cleanup in web servers + +--- + +## 3. Lambda Expressions + +### Output: + +-Thread is running using a...! + +### What is `() -> {}`? +This is a **Lambda Expression** introduced in Java. + + +### Comparison: + +| Traditional | Lambda | +|-------------|--------| +| Needs separate class | No separate class | +| More code | Concise | +| `new Thread(new Runnable(){...})` | `new Thread(() -> {...})` | + +--- \ No newline at end of file