package com.kang.multithread;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.FutureTask;
/**
* @author klr
* @create 2020-09-14-12:59
*/
public class ThreadTest {
public static void main(String[] args) throws ExecutionException, InterruptedException {
//1 thread
Thread t = new Thread("1"){
@Override
public void run() {
System.out.println(1);
}
};
t.start();
//2 runnable
Runnable runnable = () -> System.out.println(2);
runnable.run();//主线程执行
Thread t1 = new Thread(runnable,"2");//其他线程执行
t1.start();
//3 futuretask
//integer是返回类型
FutureTask<Integer> futureTask = new FutureTask(new Callable<Integer>() {
@Override
public Integer call() throws Exception {
System.out.println(3);
Thread.sleep(1000);
return 100;
}
});
// futureTask.run();//主线程执行
Thread t2 = new Thread(futureTask);//交给其他线程执行
t2.start();
System.out.println(futureTask.get()+"1");//主线程会一直阻塞在这等结果
}
}
网友评论