Avatar ·

Em Java: implements Runnable vs extends Thread — o que escolher para criar uma thread?

Olá a todos! Comecei a estudar multithreading em Java e fiquei confuso com duas abordagens para criar threads. Em todo lugar escrevem que você pode estender a classe Thread ou implementar a interface Runnable. Mas quando usar qual? Aqui estão os exemplos que tentei: 1) extends Thread: ```java class MyThread extends Thread { public void run() { System.out.println("Thread funcionando"); } } public class Main { public static void main(String[] args) { MyThread t = new MyThread(); t.start(); } } ``` 2) implements Runnable: ```java class MyRunnable implements Runnable { public void run() { System.out.println("Thread funcionando"); } } public class Main { public static void main(String[] args) { MyRunnable task = new MyRunnable(); Thread t = new Thread(task); t.start(); } } ``` Ambas as opções funcionam — eu verifiquei. Mas qual é a diferença? Por que nos livros didáticos recomendam usar Runnable? E é possível