我学习多线程疑惑,为什么会有这种代码出现:
public static void main(String[] args) {
Thread t = new Thread(new Runnable() {
public void run() {
System.out.println("this is a runnable");
}
}
);
t.start();
}
不是有个更简便的方法吗?
Thread t = new Thread() {
public void run() {
System.out.println("this is a thread");
}
};
t.start();
虽然很容易知道Runnable是个接口,而Thread是Runnable的一个具体实现。但是既然concurrent包中只有Thread一个类实现,那些Runnable这个接口到底有什么用?
答案就是用户可能会使用到多类继承,但是这在java中是禁止,只能用interface实现。比如我想设计一个任务队列,然后这个任务可以随时开启一个线程运行。
class TaskQueue <T> extends LinkedList<T> implements Runnable {
@Override
public void run() {
//...
}
}

本文探讨了Java中多线程编程的两种常见方式:通过实现Runnable接口和继承Thread类。对比这两种方法,并解释了为何即使只有一个Thread类实现了Runnable接口,仍然需要使用Runnable的原因。此外,还提供了一个具体的例子来展示如何利用Runnable来设计任务队列。
1112

被折叠的 条评论
为什么被折叠?



