创建和运行线程
方法一,直接使用Thread
Thread t = new Thread(){
public void run(){
//线程需要执行的代码
}
};
//启动线程
t.start()
方法二,使用Runnable配合Thread
把线程和任务需要执行的代码分开
Thread代表线程
Runnable中包括可运行的任务(线程需要执行的代码)
方法三,FutureTask配合Thread
FutureTask能够接收Callable类型的参数,用来处理有返回结果的情况
原理之Thread与Runnable的关系
源码中Thread实现的Runnable接口
1、直接使用Thread方法创建线程是把线程和任务合并在了一起,使用Runnable配合Thread创建线程的方法是把线程和任务分开了
2、用Runnable更容易与线程池等高级API配合
3、用Runnable让任务脱离了Thread继承体系,更加灵活
观察多个线程同时运行
1、交替执行
2、谁先谁后,不由我们控制