Java 多线程开发系列 2:创建一个线程
一、创建线程的方式
在 Java 中,有两种创建线程的方式。
方式 1:继承 Thread 类:这种方式是通过创建一个新类,继承自 Thread 类,然后重写 run()方法来实现线程的运行。
方式 2:将 Runnable 传给 Thread:这种方式是通过创建一个实现了 Runnable 接口的类,然后将这个类的实例传递给 Thread 类的构造方法。
注意:创建线程后需要调用 start()方法,线程才会真正运行。你可以尝试一下,直接调用线程的 run()方法,看看会发生什么?
为什么 Java 语言要提供两种创建线程的方式?答案是:为了满足两种不同的场景。
第一种创建线程的方式,我们发现线程的 run 方法是提前定义好的,因此每次你创建一个线程,这个线程只能执行特定的逻辑,不能在运行时进行改变。从 Java 语言本身的限制看,由于 Java 只能单继承,如果一个类继承了其它类,就不能再继承 Thread 类了。
第二种创建线程的方式,你可以在运行时组装不同的 runnable 接口实现,从而让线程执行不同的逻辑。比如一个 web 服务器,每次接收一个请求,可以创建一个新的线程来处理,这个请求可能是查询数据,也可能是生成图片,因此需要在创建线程时动态指定线程要做的事(runnable)。
二、Java 线程的背后
在 Java 21 以前,Java 创建的线程背后,都是一个操作系统线程,java 的线程只是对系统线程的一个轻量级封装,通过 JNI 技术来将任务代理给操作系统,最终要依靠系统的线程执行来完成任务,因此是比较重量的实现。Java 21 正式发布了虚拟线程以支持创建非常轻量级的线程,后面会专门讲到。
版权声明: 本文为 InfoQ 作者【BigBang!】的原创文章。
原文链接:【http://xie.infoq.cn/article/3c48e4d147da54c16703f72ac】。文章转载请联系作者。
评论