1.继承Thread类,重写run()——【线程类】线程
2.实现Runnable接口,重写run()——【任务类】继承
3.实现Callable接口,重写call()——【带返回值的任务类】接口
eg.线程池
FutureTask<String> task = new FutureTask<>(new Task()); Thread t = new Thread(task); //开启分线程 t.start();call
4.经过线程池建立new