方式一:
直接使用 Thread
// 创建线程对象
Thread t = new Thread() {
public void run() {
// 要执行的任务
}
};
// lambda表达式
Thread t = new Thread(() -> {
// 要执行的任务(单行代码可省略大括号)
});
// 启动线程
t.start();
方式二:
把【线程】和【任务】(要执行的代码)分开
Thread 代表线程
Runnable 可运行的任务(线程要执行的代码)
Runnable runnable = new Runnable() {
public void run(){
// 要执行的任务
}
};
// lambda表达式
Runnable r = () -> {
// 要执行的任务(单行代码可省略大括号)
};
// 创建线程对象
Thread t = new Thread( runnable );
// 启动线程
t.start();
小结
方式一 是把线程和任务合并在了一起,方式二是把线程和任务分开了
用 Runnable 更容易与线程池等高级 API 配合
用 Runnable 让任务类脱离了 Thread 继承体系,更灵活
方式三,FutureTask 配合 Thread
FutureTask 能够接收 Callable 类型的参数,用来处理有返回结果的情况
网友评论