** 公众号:大步追逐的梦想**
/**
- Runnable Callable 区别: Callable具有返回值
- Runnable Thread 怎么选择?
- 因为Java是面向对象的语言 根据面向对象的特性来说 Java只支持单继承
*/
/**
* Runnable Callable 区别: Callable具有返回值
*
* Runnable Thread 怎么选择?
*
* 因为Java是面向对象的语言 根据面向对象的特性来说 Java只支持单继承
*
*/
public class StartThread {
/**
* main start
*/
public static void main(String[] args) throws ExecutionException, InterruptedException {
UseRunnable runnable = new UseRunnable();
new Thread(runnable).start();
UseThread useThread = new UseThread();
new Thread(useThread).start();
UseCallable useCallable = new UseCallable();
FutureTask<String> futureTask = new FutureTask<String>(useCallable);
new Thread(futureTask).start();
System.out.println("first callable result : " + futureTask.get());
}
/**
* 通过集成Thread类实现多线程
*/
private static class UseThread extends Thread {
@Override
public void run() {
System.out.println("exec thread");
}
}
/**
* 通过实现Runnable接口实现多线程
*/
private static class UseRunnable implements Runnable {
@Override
public void run() {
System.out.println("exec runnable");
}
}
/**
* 通过实现Callable接口实现多线程
*/
private static class UseCallable implements Callable<String> {
@Override
public String call() throws Exception {
System.out.println("exec callable");
return "CallableResult";
}
}
}