Creating Threads
1. Three Ways (beginner — exam all!)
extends Thread, implements Runnable (preferred!), lambda/anonymous (modern shortcut!). All need start() (not run()!).
2. Code — All Three (copy pattern!)
// 1. extends Thread
class T1 extends Thread { public void run() { System.out.println("T1"); } }
// 2. implements Runnable
class T2 implements Runnable { public void run() { System.out.println("T2"); } }
new T1().start(); // direct!
new Thread(new T2()).start(); // wrap!
// 3. lambda (shortest! Java 8+)
new Thread(() -> System.out.println("T3")).start();
// 4. anonymous (old shortcut!)
new Thread(new Runnable() { public void run() { System.out.println("T4"); } }).start();
3. Which to Use? (exam viva!)
| Way | Plus | Minus |
|---|---|---|
| extends Thread | simple | no other extends! |
| implements Runnable | flexible (extend too!) + shared task! | wrap needed |
| lambda | 1-line! | Java 8+ only |
4. Lifecycle Taste ( Born → Runnable → Running → Dead!)
new (born!) → start() (ready!) → scheduler picks (running!) → run() ends (dead!). sleep()/wait() pause (later topics!).
5. Exam Points
- Three ways program — 7 marks, very frequent.
- Runnable-preferred reason + lifecycle — 3-5 marks, frequent.