教育路上
摘要:。以下是我们为大家整理的,相信大家阅读完后肯定有了自己的选择吧。
2022-05-19 13:32网络推荐
上一小节介绍了什么是多线程,接下来为大家讲解在 Java 程序中如何实现多线程。Java
提供了两种多线程实现方式,一种是继承 java.lang 包下的 Thread 类,覆写 Thread 类的 run()
方法,在 run()方法中实现运行在线程上的代码;另一类是实现 java.lang.Runnable 接口,同
样是在 run()方法中实现运行在线程中的代码。接下来就对创建多线程的两种方式分别进行
讲解,并比较它们的优缺点。
14.2.1 继承 Thread 类创建多线程
在学习多线程之前,先来看看我们所熟悉的单线程程序,如例 14-1 所示。
例 14-1 Example01.java
public class Example01 {
public static void main(String[] args) {
MyThread myThread=new MyThread(); // 创建 MyThread 实例对象
myThread.run(); // 调用 MyThread 类的 run()方法
while (true) { // 该循环是一个死循环,打印输出语句
System.out.println("Main 方法在运行");
}
}
}
class MyThread {
public void run() {
while (true) { // 该循环是一个死循环,打印输出语句
System.out.println("MyThread 类的 run()方法在运行");
}
}
}
运行结果如图 14-3 所示。
从图 14-3 所示的运行结果可以看出,程序一直打印的是“MyThread 类的 run()方法
在运行”,这是因为该程序是一个单线程程序,当调用 MyThread 类的 run()方法时,遇到
死循环,循环会一直进行。因此,MyThread 类的打印语句将永远执行,而 main()方法中
的打印语句无法得到执行。
如果希望得到例 14-1 中两个 while 循环中的打印语句能够并发执行,就需要实现多
线程、为此 JDK 中提供了一个线程类 Thread,通过继承 Thread,并重写 Thread 类中的 run()
方法便可实现多线程。在 Thread 类中,提供了一个 start()方法用于启动新线程,线程启动
后,系统会自动调用 run()方法。接下来通过一个案例来演示如何通过继承 Thread 类的方
式来实现多线程,如例 14-2 所示。
例 14-2 Example02.java
public class Example02 {
public static void main(String[] args) {
MyThread myThread = new MyThread(); // 创建线程 MyThread 的
线程对象
myThread.start(); // 开启线程
while (true) { // 通过死循环语句打
印输出
System.out.println("main()方法在运行");
}
}
}
class MyThread extends Thread {
public void run() {
while (true) { // 通过死循环语句打印输出
System.out.println("MyThread 类的 run()方法在运行");
}
}
}
运行结果如图 14-4 所示。
此处有截图 图 14-4 例 5-2 运行结果
从图 14-4 所示的运行结果可以看到,两个 while 循环中的打印语句轮流执行了,说
明该例程实现了多线程。为了使大家更好地理解单线程和多线程的执行过程,接下来通过一
个图例分析一下单线程和多线程的运行流程,如图 14-5 所示。
从图 14-5 可以看出,单线程的程序在运行时,会按照代码的调用顺序进行执行。
而在多线程中,main()方法和 MyThread 类的 run( )方法却可以同时运行,互不影响,这
正是单线程和多线程的区别。
访客的评论 2024/04/23 17:41
文中描述的是准确的吗,如何报名!