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