大家都知道JAVA中开启线程最基础的方法有三种。分别是继承Thread类、实现Runnable接口、实现Callable接口,然后分别实现对应的方法,这里不过多描述。
那么如果采用继承Thread类方式,匿名类方式实现Runnable对应run()方法后,有几种启动线程的方式,各有什么区别?
package com.algorithm;
/**
* 面试锦集:
* Thread启动线程有哪些方法,区别是什么
*
* @author 小辉哥/小辉GE
* <p>
* 2019年8月4日 上午9:22:12
*/
import java.util.concurrent.TimeUnit;
public class ThreadStartRunDifference {
public static void main(String[] args) {
Thread thread = new Thread() {
@Override
public void run() {
try {
//为了更好的体现输出结果, 让线程sleep 5秒
TimeUnit.SECONDS.sleep(5);
System.out.println(Thread.currentThread().getName() + "线程输出了 ......");
} catch (InterruptedException e) {
e.printStackTrace();
}
}
};
// 总结:
// Thread的run()和start()都可以启动线程
// 区别是run()方法直接是主线程main调用,需要等待线程运行完毕。 start()方法是开启一个线程执行
//thread.run();
thread.start();
System.out.println("main方法执行完毕了......");
}
}
首先采用start()方法调用,测试输出结果如下:
然后采用run()方法调用,测试输出结果如下:
在这里我们稍微做一下总结:
Thread的run()和start()都可以启动线程,区别是run()方法是主线程main直接调用,需要等待线程运行完毕。 start()方法是开启一个异步线程执行!
以上代码仅供参考,如有不当之处,欢迎指出!!!
更多干货,欢迎大家关注和联系我。期待和大家一起更好的交流、探讨技术!!!