Files
HW-08-Basic-Multithreading/Report.md
T

82 lines
1.8 KiB
Markdown

# 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(() -> {...})` |
---