importjava.util.ArrayList;importjava.util.List;import java.util.concurrent.*;public classThreadTester {public static voidmain(String[] args) {//1-继承Thread类
MyThread thread1 = newMyThread();
MyThread thread2= newMyThread();
thread1.start();
thread2.start();//2-实现Runnable接口
MyRunableImpl runable = newMyRunableImpl();newThread(runable).start();newThread(runable).start();//3-实现Callable接口
FutureTask futureTask = new FutureTask<>(newMyCallableImpl());newThread(futureTask).start();try{
String result=futureTask.get();
System.out.println(result);
}catch(InterruptedException e) {
e.printStackTrace();
}catch(ExecutionException e) {
e.printStackTrace();
}//4-使用ExecutorService实现
ExecutorService poll = Executors.newFixedThreadPool(5);
List> resuls = new ArrayList<>();for (int i = 0; i < 5; i++) {
MyCallableImpl callable= newMyCallableImpl();
Future future =poll.submit(callable);
resuls.add(future);
}
poll.shutdown();
resuls.forEach((result)->{
String str= null;try{
str=result.get();
System.out.println(str);
}catch(InterruptedException e) {
e.printStackTrace();
}catch(ExecutionException e) {
e.printStackTrace();
}
});
}
}class MyCallableImpl implements Callable{
@Overridepublic String call() throwsException {return Thread.currentThread().getName() + " run!";
}
}class MyRunableImpl implementsRunnable {private int num = 10;
@Overridepublic synchronized voidrun() {for (int i = 0; i < 10 && this.num >= 0; i++) {
System.out.println(Thread.currentThread().getName()+ " num:" + this.num--);
}
}
}class MyThread extendsThread {
@Overridepublic voidrun() {
System.out.println(this.getName() + " run!");
}
}