package myThread;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.FutureTask;
/**
* @author admin
* @version $Id$
* @since 五月 12, 2019 11:18
*/
public class MyThread {
//方式一:继承Thread类
private static class ThreadDemo extends Thread{
@Override
public void run() {
super.run();
System.out.println(Thread.currentThread().getName()+" extends Thread ");
}
}
//方式二:实现Runnable接口
private static class RunnableDemo implements Runnable{
@Override
public void run() {
System.out.println(Thread.currentThread().getName()+" implements Runnable ");
}
}
//方式二:实现Callable接口
private static class CallableDemo implements Callable<String> {
@Override
public String call() throws Exception {
System.out.println(Thread.currentThread().getName()+" implements Callable ");
return "大吉大利";
}
}
public static void main(String[] args) throws ExecutionException, InterruptedException {
ThreadDemo thread1 = new ThreadDemo();
thread1.start();
RunnableDemo runnable = new RunnableDemo();
new Thread(runnable).start();
CallableDemo callable = new CallableDemo();
FutureTask<String> futureTask = new FutureTask<String>(callable);
new Thread(futureTask).start();
System.out.println(futureTask.get());
}
}