慕码人4120781
2020-07-17 20:44
不是特别理解这两种创建方法之间的关联
还有一点区别,实现Runnable结构去创建线程类时,可以方便的实现多线程处理类内共享变量。例如:
class MyThread1 implements Runnable{
private int ticketsCont = 5; //共享变量
@Override
public void run() {
while(ticketsCont > 0) {
ticketsCont--;
System.out.println(Thread.currentThread().getName() + "买了一张票,剩余票数: " + ticketsCont);
}
}
}
public class TicketsRunnable {
public static void main(String[] args) {
MyThread1 myThread1 = new MyThread1();
Thread t1 = new Thread(myThread1, "A");
Thread t2 = new Thread(myThread1, "B");
Thread t3 = new Thread(myThread1, "C");
t1.start();
t2.start();
t3.start();
}
}
没什么区别 , Thread类本质上也是实现了Runnable接口 , 由于类单继承以及接口多继承 , 推荐用Runnable接口 , 因为可能你的类需要继承别的类 , 不管是通过继承类还是实现接口来实现多线程 , 最终都是通过Thread的对象的API来控制线程的
深入浅出Java多线程
186066 学习 · 502 问题
相似问题