redmi + multithreading
This commit is contained in:
@@ -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(() -> {...})` |
|
||||||
|
|
||||||
|
---
|
||||||
Reference in New Issue
Block a user