public class TestThread {
public static void main(String[] args) throws InterruptedException, ExecutionException, TimeoutException {
//extends from Thread
new MyThread().start();
//implements from Runnable
new Thread(new Runnable() {
@Override
public void run() {
System.out.println("Implement form Runnable 1");
}
}).start();
//FutureTask实现了Runnable,它既可以通过Thread包装来直接执行,也可以提交给ExecutorService来执行
//Callable 1
ExecutorService executorService = Executors.newFixedThreadPool(10);
Callable<String> callable1 = new Callable<String>() {
@Override
public String call() throws Exception {
return "Callable 1";
}
};
Future<String> stringFuture = executorService.submit(callable1);
System.out.println(stringFuture.get(10, TimeUnit.SECONDS));
//Callable 2
FutureTask<String> futureTask = new FutureTask<>(new Callable<String>() {
@Override
public String call() throws Exception {
return "Callable 2";
}
});
executorService.execute(futureTask);
String res = futureTask.get(3, TimeUnit.SECONDS);
System.out.println(res);
//Callable 3
Callable myCallable = new Callable() {
@Override
public Object call() throws Exception {
return "Callable 3";
}
};
FutureTask<String> futureTask1 = new FutureTask<>(myCallable);
new Thread(futureTask1).start();
System.out.println(futureTask1.get());
}
}
class MyThread extends Thread {
@Override
public void run() {
System.out.println("Extends from Thread");
}
}
线程创建与执行
猜你喜欢
转载自blog.csdn.net/tolmanlau/article/details/115192052
今日推荐
周排行