与许多其他计算机语言不同,Java提供了对多线程的内置支持。Java中的多线程包含两个或多个可以同时运行的部分。Java线程实际上是一个轻量级进程。
本文将向您介绍许多人发现棘手或难以理解的所有Java Thread概念。
我将介绍以下主题:
在继续第一个主题之前,请考虑以下示例:
想象一下具有许多复杂功能的股票经纪人应用程序,例如
如果历史分析需要半小时,并且用户选择执行下载并事后检查,则警告可能来不及买卖股票。这是一种需要多线程处理的应用程序。理想情况下,下载应在后台(即在另一个线程中)进行。这样,其他进程可能会同时发生,从而例如可以立即传达警告。一直以来,用户正在与应用程序的其他部分进行交互。分析也可能在单独的线程中进行,因此用户可以在计算结果的同时使用应用程序的其余部分。
这是Java线程提供帮助的地方。
什么是Java线程?
线程实际上是一个轻量级进程。与许多其他计算机语言不同,Java为多线程编程提供了内置支持。多线程程序包含两个或多个可以同时运行的部分。这样的程序的每个部分都称为线程,每个线程定义执行的单独路径。因此,多线程是多任务的一种特殊形式。
Java线程模型
Java运行时系统在很多方面都依赖于线程。线程通过防止浪费CPU周期来降低效率。
线程以几种状态存在:
现在,让我们跳到Java线程最重要的主题:线程类和可运行接口。
Java中的多线程:线程类和可运行接口
Java的多线程系统基于Thread类,其方法以及其伴随接口Runnable构建。要创建一个新的线程,你的程序将可以扩展主题或实施的Runnableinterface。
Thread类定义了几种有助于管理线程的方法:
现在,让我们看看如何使用以所有Java程序具有的主要Java线程开头的Thread 。
Java主线程
在这里,我将向您展示如何使用Thread和Runnable接口来创建和管理线程,从Java主线程开始。
为什么主线程如此重要?
如何创建Java线程
Java使您可以通过以下两种方式之一创建线程:
让我们看一下这两种方式如何帮助实现Java线程。
可运行的界面
创建线程的最简单方法是创建一个实现Runnable接口的类。
为了实现Runnable接口,一个类仅需要实现一个名为run()的方法,该方法的声明如下:
public void run( )
在run()内部,我们将定义构成新线程的代码。例子:
public class MyClass implements Runnable { public void run(){ System.out.println("MyClass running"); } }
要通过线程执行run()方法,请将MyClass的实例传递给其构造函数中的Thread(Java中的构造函数是类似于在创建对象实例时调用的方法的代码块)。这是如何完成的:
Thread t1 = new Thread(new MyClass ()); t1.start();
当线程启动时,它将调用MyClass实例的run()方法,而不是执行自己的run()方法。上面的示例将打印出文本“ MyClass running ”。
扩展Java线程
创建线程的第二种方法是创建一个扩展Thread的新类,然后重写run()方法,然后创建该类的实例。调用start()后,线程将执行run()方法。这是创建Java Thread子类的示例:
public class MyClass extends Thread { public void run(){ System.out.println("MyClass running"); } }
创建并启动上述线程:
MyClass t1 = new MyClass (); T1.start();
当run()方法执行时,它将打印出文本“ MyClass running ”。
到目前为止,我们仅使用了两个线程:主线程和一个子线程。但是,我们的程序可以影响所需数量的线程。让我们看看如何创建多个线程。
创建多个线程
class MyThread implements Runnable { String name; Thread t; MyThread String thread){ name = threadname; t = new Thread(this, name); System.out.println("New thread: " + t); t.start(); } public void run() { try { for(int i = 5; i > 0; i--) { System.out.println(name + ": " + i); Thread.sleep(1000); } }catch (InterruptedException e) { System.out.println(name + "Interrupted"); } System.out.println(name + " exiting."); } } class MultiThread { public static void main(String args[]) { new MyThread("One"); new MyThread("Two"); new NewThread("Three"); try { Thread.sleep(10000); } catch (InterruptedException e) { System.out.println("Main thread Interrupted"); } System.out.println("Main thread exiting."); } }
该程序的输出如下所示:
New thread: Thread[One,5,main] New thread: Thread[Two,5,main] New thread: Thread[Three,5,main] One: 5 Two: 5 Three: 5 One: 4 Two: 4 Three: 4 One: 3 Three: 3 Two: 3 One: 2 Three: 2 Two: 2 One: 1 Three: 1 Two: 1 One exiting. Two exiting. Three exiting. Main thread exiting.
这就是Java中的多线程工作方式。我希望这对您有所帮助。在我的Java教程博客系列的下一篇文章中,您将了解Java集合。
原文链接:https://blog.csdn.net/Beibnjin/article/details/113827586?utm_medium=distribute.pc_category.none-task-blog-hot-1.nonecase&depth_1-utm_source=distribute.pc_category.none-task-blog-hot-1.nonecase&request_id=