之前我们学习了多线程,今天来说Java程序中如何实现多线程,Java提供了两种多线程实现方法,今天就来说说第一种继承Thread类创建多线程,另一种方法请看下篇!
在学习多线程之前,先来看看我们所熟悉的单线程程序,如图所示:
运行结果:
从运行结果可以看出,程序一直打印的是“MyThread类的run()方法在运行”,这是因为该程序是一个单线程程序,当调用MyThread类的run()方法时,遇到死循环,循环会一直进行。因此,MyThread类的打印语言将永远执行,而main()方法中的打印语句无法得到执行。
如果希望图1中两个while循环中的打印语句能够并发执行,就需要实现多线程。为此JDK提供了一个线程类Thread,通过继承Thread类中,并重写Thread类中的run()方法便可实现多线程。在Thread类中,提供了一个start()方法用于启动新线程,线程启动后,系统会自动调用run()方法。接下来通过一个案例来演示如何通过继承Thread类的方式来实现多线程,如图所示:
运行结果:
从运行结果可以看出,两个while循环中的打印语句轮流执行了,说明该例程实现了多线程。为了使大家更好地理解单线程和多线程的执行过程,接下来通过一个图例分析一下单线程和多线程的运行流程。如图所示:
从图可以看出,单线程的程序在运行时,会按照代码的调用顺序进行执行。而在多线程中,main()方法和MyThread类的run()方法却可以同时运行,互不影响,这正是单线程与多线程的区别。