package Thread;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
import java.util.concurrent.FutureTask;
public class FourFoundThread {
public static void main(String[] args) throws InterruptedException, ExecutionException {
System.out.println("main线程开始执行了==========");
//创建线程的方式1 new继承Thread类的类的实例
MyTHread MT=new MyTHread();MT.setName("Thread子类实例线程");
MT.start();
//创建线程的方式2 实现Runable接口的类的实例用来实例Thread类
MyRunableImplement MRI=new MyRunableImplement();
Thread t1=new Thread(MRI);t1.setName("以Runable实现类构造Thread类实例线程");
t1.start();
//创建线程的方式3 实现Callable接口的类的实例用来实例Thread类
MyCallableImplement MCI=new MyCallableImplement();
FutureTask<String> FT=new FutureTask<String>(MCI);
Thread t2=new Thread(FT);t2.setName("以Callable实现类构造FutureTask实例,再以其构造Thread类实例线程");
t2.start();System.out.println(FT.get()+FT.isDone());
System.out.println("main线程结束了==========");
//创建线程的方式4 线程池
ExecutorService es=Executors.newFixedThreadPool(2);
es.execute(MRI);
Future<String> submit = es.submit(MCI);
String str=submit.get();System.out.println(str+submit.isDone());
es.shutdown();
}
static class MyTHread extends Thread{
@Override
public void run() {
for (int i = 0; i < 3; i++) {
System.out.println(this.getName()+"打印"+i);
}
}
}
static class MyRunableImplement implements Runnable{
@Override
public void run() {
for (int i = 0; i < 3; i++) {
System.out.println(Thread.currentThread().getName()+"打印"+i);
}
}
}
static class MyCallableImplement implements Callable<String>{
@Override
public String call() throws Exception {
for (int i = 0; i < 3; i++) {
System.out.println(Thread.currentThread().getName()+"打印"+i);
}
return "打印完成";
}
}
}