桥梁建设杂志有假网站吗网站一直不被收录
这是后端面试集锦第十五篇博文——java线程面试话术❗❗❗
1. 创建线程的方式
 首先呢,Thread类本质上是实现了Runnable接口,代表一个线程的实例。
所以,我们可以编写一个类,继承Thread类,或者直接实现Runnable接口。然后,再重写下~run方法就行了。启动线程的方式就是调用类里边的start方法。
start()方法是一个native方法,它的作用就是启动线程,线程会去执行run()方法中的代码。
还有就是实现Callable接口,这个接口相当于是Runnable接口的增强版,他的执行代码的方法不是run方法了,是call方法。这个call方法可以有返回值。
我们可以创建一个FutureTask类的实例对象,通过他的get()方法得到执行结果,不过这里定的执行结果需要跟FutureTask的泛型一致才行,并且call方法还可以抛出异常,通过这些,我们就能很明确的知道线程内部的执行状态
还有就是通过线程池来实现,线程池就是事先将多个线程对象放到一个容器中。当使用的时候就不用new线程而是直接去池中拿线程即可,节省了开辟子线程的时间,提高的代码执行效率。
一般创建线程池的话,都是使用个的Exe
