1.Thread
2.Runnable
3.FutureTask
带返回值
class FutureTask implements RunnableFuture
interface RunnableFuture extends Runnable, Future
public static void main(String[] args) throws Exception {
FutureTask ft = new FutureTask<>(new Callable() {
@Override
public Object call() throws Exception {
System.out.println(new Date());//Wed Mar 20 19:04:45 CST 2019
Thread.sleep(3000);
return 1;
}
});
new Thread(ft).start();
//阻塞到任务结束
Object o = ft.get();
System.out.println(new Date() + " o =" + o);//Wed Mar 20 19:04:49 CST 2019 o =1
}
4.TimerTask
定时器
abstract class TimerTask implements Runnable
public static void main(String[] args) throws Exception {
Timer timer = new Timer();
TimerTask timerTask = new TimerTask() {
@Override
public void run() {
System.out.println(new Date() + " run");//Wed Mar 20 19:12:54 CST 2019 run
}
};
timer.schedule(timerTask, 1000);
System.out.println(new Date());//Wed Mar 20 19:12:53 CST 2019
}