Files

1.8 KiB

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