Runnable
定义线程的接口,只有一个run()方法,而且没有返回值。一般通过实现这个接口来定义线程。
public interface Runnable {
public abstract void run();
}
经常可以用匿名内部类实现:
new Thread(new Runnable(){
@Override
public void run() {
execute(arg);
}
}).start();
Thread
Thread实现了Runnable,是线程功能实现的类。可以通过继承Thread实现自己线程的功能,主要重写run()方法。
通过继承实现会牺牲一定的灵活性,因为Java只支持单继承。
注意启动线程的时候是调用Thread.start(),而不是Thread.run().
public class Thread implements Runnable
Callable
也是定义线程类型的接口,只有call()方法,有返回值。 与Runnable不同的是,它也返回线程执行后的结果,可以接受异常的检查。
public interface Callable<V> {
/**
* Computes a result, or throws an exception if unable to do so.
*
* @return computed result
* @throws Exception if unable to compute a result
*/
V call() throws Exception;
}