线程的创建
Java语言程序设计—多线程—线程的创建86 播放 · 0 赞同视频正在上传…重新上传取消
在Java中,类仅支持单继承,也就是说,当定义一个新的类时,它只能扩展一个外部类。如果创建自定义线程类的时候是通过扩展 Thread类的方法来实现的,那么这个自定义类就不能再去扩展其他的类,也就无法实现更加复杂的功能。因此,如果自定义类必须扩展其他的类,那么就可以使用实现Runnable接口的方法来定义该类为线程类,这样就可以避免Java单继承所带来的局限性。Java提供了三种创建线程的方式,下面分别进行详细的讲解。
Ø 继承Thread类创建线程
Java提供了Thread类代表线程,它位于java.lang包中,下面介绍Thread类创建并启动多线程的步骤,具体步骤如下。
(1)定义Thread类的子类,并重写run()方法,run()方法称为线程执行体。
(2)创建Thread子类的实例,即创建了线程对象。
(3)调用线程对象的start()方法启动线程。
启动一个新线程时,需要创建一个Thread类实例,接下来了解一下Thread类的常用构造方法。如表所示。
表中列出了Thread类的常用构造方法,这些构造方法可以创建线程实例,线程真正的功能代码在类的run()方法中。当一个类继承Thread类后,可以在类中覆盖父类的run()方法,在方法内写入功能代码。另外,Thread类还有一些常用方法。
如表所示。
表中列出了Thread类的常用方法,接下来用一个案例演示如何用继承Thread类的方式创建线程,如例所示。
程序的运行结果如图所示。
在例中,声明SubThread1类继承Thread类,在类中重写了run()方法,方法内循环打印小于4的奇数,其中,currentThread()方法是Thread类的静态方法,可以返回当前正在执行的线程对象的引用,最后在main()方法中创建两个SubThread1类实例,分别调用start()方法启动两个线程,两个线程都运行成功。这是继承Thread类创建多线程的方式。
如果start()方法调用一个已经启动的线程,程序会报IllegalThreadStateException异常。