全国咨询/投诉热线:400-618-9090

首页技术文章正文

Java基础教程:多线程(2)-----创建线程的第一种方式

更新时间:2017-11-14 来源:黑马程序员 浏览量:

在Java中,实现多线程操作有两种方式,一种是继承java.lang包下的Thread类,覆写Thread类的run()方法,在run()方法中实现运行在线程上的代码。另一种就是实现java.lang.Runnable接口,同样是在run()方法中实现运行在线程上的代码。两种方式的区别在于,继承Thread类可以直接启动线程,实现Runnable接口不能直接启动线程,需要先创建Thread类的实例对象,通过Thread类的构造方法传入实现了Runnable接口的实例对象,然后通过Thread类来启动线程。因此,这两种方式都会用到Thread类,由此可见该类在多线程中的重要性,接下来就通过一些实例针对Java中多线程的两种创建方式分别进行讲解,并比较它们的优缺点。

创建线程的第一种方式----继承Thread类,代码如下所示:

public class Example02 {
    publicstatic void main(String[] args) {
        Clientt2=new Client();
        t2.start();
        while(true) {
            System.out.println(Thread.currentThread().getName()
            +"................... Client2 is running");
        }
    }
}
class Client extends Thread {
    publicvoid run() {
        while(true) {
            System.out.println(Thread.currentThread().getName()
            + "...................Client1 isrunning");
        }
    }
}

例程中,Client类继承了Thread类,也就具有了Thread类的全部特点,在main()方法中创建Client的实例对象,并调用从Thread类继承的start()方法开启线程,两个while循环处的代码交替运行。为了方便看出哪个线程正在运行,可以通过Thread.currentThread().getName()方法获得当前线程的名称,默认情况下,主线程的名称为main,用户启动的多条线程的名称依次为Thread-0、Thread-1、Thread-2……Thread-n等。接下来通过单线程和多线程运行的流程图来说明它们的区别,如下图所示。

从图中可知,单线程中,main()方法必须等到Client的print()方法返回后才能继续运行,而在多线程中,main()方法和Client的run()方法运行在各自的线程中,互不影响。这就好比一个1G的CPU分成了两个500M的CPU,在一个CPU上运行main()方法,另一个CPU上运行Client的run()方法。

大家可能会有这样的疑问:程序没有直接调用Client对象的run()方法,而是调用了该对象从Thread类继承来的start()方法,那为什么会执行run()方法呢? 这是因为start()方法有两个作用,一是开启一个新的线程,二是调用Thread子类对象的run()方法。如果直接调用线程对象的run()方法,线程对象只是一个普通类的实例对象,新的线程并没有开启,run()方法中的代码也只会在主线程中执行。

友情提示:获得更多学科学习视频+资料+源码,请加QQ:2632311208。


本文版权归黑马程序员JavaEE学院所有,欢迎转载,转载请注明作者出处。谢谢!


作者:黑马程序员JavaEE培训学院


首发:http://java.itheima.com/

相关推荐:

javaee

python

web

ui

cloud

test

c

netmarket

pm

Linux

movies

robot

http://www.itcast.cn/subject/uizly/index.shtml?seozxuids

14天免费试学

基础班入门课程限时免费

申请试学名额

15天免费试学

基础班入门课程限时免费

申请试学名额

15天免费试学

基础班入门课程限时免费

申请试学名额

15天免费试学

基础班入门课程限时免费

申请试学名额

20天免费试学

基础班入门课程限时免费

申请试学名额

8天免费试学

基础班入门课程限时免费

申请试学名额

20天免费试学

基础班入门课程限时免费

申请试学名额

5天免费试学

基础班入门课程限时免费

申请试学名额

0天免费试学

基础班入门课程限时免费

申请试学名额

12天免费试学

基础班入门课程限时免费

申请试学名额

5天免费试学

基础班入门课程限时免费

申请试学名额

5天免费试学

基础班入门课程限时免费

申请试学名额

10天免费试学

基础班入门课程限时免费

申请试学名额
在线咨询 我要报名