首页 >职场糗事 > 内容

精选干货分享 Java线程教程:使用Java创建线程和多线程

2023年9月22日 00:21

通过优锐课的java学习分享中,讨论了对Java Thread概念的简要介绍,很多人觉得很棘手。

与许多其他计算机语言不同,Java提供了对多线程的内置支持。 Java中的多线程包含两个或多个可以同时运行的部分。 Java线程实际上是一个轻量级进程。

本文将向你介绍许多人发现棘手或难以理解的所有Java Thread概念。

我将介绍以下主题:
1.什么是Java线程?
2.Java线程模型
3.Java多线程
4.Java主线程
5.如何创建Java线程?

在继续第一个主题之前,请考虑以下示例:

想象一下具有许多复杂功能的股票经纪人应用程序,例如
1.下载最后的股价
2.检查价格以获取警告
3.分析特定公司的历史数据

这些是耗时的功能。在单线程运行时环境中,这些操作将一个接一个地执行。仅当上一个操作完成后,才能执行下一个操作。

如果历史分析需要半小时,并且用户选择执行下载并事后检查,则警告可能来不及买卖股票。这是一种需要多线程处理的应用程序。理想情况下,下载应在后台(即在另一个线程中)进行。这样,其他进程可能会同时发生,从而例如可以立即传达警告。一直以来,用户正在与应用程序的其他部分进行交互。分析也可以在单独的线程中进行,因此用户可以在计算结果的同时使用应用程序的其余部分。
这是Java线程提供帮助的地方。

什么是Java线程?

线程实际上是一个轻量级进程。 与许多其他计算机语言不同,Java为多线程编程提供了内置支持。 多线程程序包含两个或多个可以同时运行的部分。 这样的程序的每个部分都称为线程,每个线程定义执行的单独路径。 因此,多线程是多任务的一种特殊形式。

Java线程模型

Java运行时系统在很多方面都依赖于线程。 线程通过防止浪费CPU周期来降低效率。

线程以几种状态存在:

新建-创建Thread类的实例时,线程处于新状态。
运行-Java线程处于运行状态。
已暂停-可以暂停正在运行的线程,这将暂时暂停其活动。 然后可以恢复被挂起的线程,使它可以从中断的位置继续。
阻止-等待资源时可以阻止Java线程。
终止-线程可以终止,这可以在任何给定时间立即停止执行。 线程终止后,将无法恢复。
在这里插入图片描述
现在,让我们跳到Java线程最重要的主题:线程类和可运行接口。
Java中的多线程:线程类和可运行接口

Java的多线程系统建立在Thread类,其方法及其配套接口Runnable的基础上。 要创建一个新线程,你的程序将扩展Thread或实现Runnableinterface。

Thread类定义了几种有助于管理线程的方法:
在这里插入图片描述
现在,让我们看看如何使用以所有Java程序具有的主要Java线程开头的Thread。

Java主线程M

在这里,我将向你展示如何使用Thread and Runnable接口从主要的Java线程开始创建和管理线程。

为什么主线程如此重要?

因为它影响其他“子”线程。
因为它执行各种关闭操作。
因为它是在程序启动时自动创建的。

如何创建Java线程

Java使你可以通过以下两种方式之一创建线程:
通过实现Runnable接口。
通过扩展线程。
让我们看一下这两种方式如何帮助实现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: 5Two: 5Three: 5One: 4Two: 4Three: 4One: 3Three: 3Two: 3One: 2Three: 2Two: 2One: 1Three: 1Two: 1One exiting.Two exiting.Three exiting.Main thread exiting.

这就是Java中的多线程工作方式。 希望这对你有所帮助。

喜欢这篇文章的可以点个赞,欢迎大家留言评论,记得关注我,每天持续更新技术干货、职场趣事、海量面试资料等等
如果你对java技术很感兴趣也可以加入我的java学习群 V–(ddmsiqi)来交流学习,里面都是同行,验证【CSDN2】有资源共享。
不要再用"没有时间“来掩饰自己思想上的懒惰!趁年轻,使劲拼,给未来的自己一个交代
在这里插入图片描述


参考文章:https://blog.csdn.net/AD_plus/article/details/103609396

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时候联系我们修改或删除,在此表示感谢。

特别提醒:

1、请用户自行保存原始数据,为确保安全网站使用完即被永久销毁,如何人将无法再次获取。

2、如果上次文件较大或者涉及到复杂运算的数据,可能需要一定的时间,请耐心等待一会。

3、请按照用户协议文明上网,如果发现用户存在恶意行为,包括但不限于发布不合适言论妄图

     获取用户隐私信息等行为,网站将根据掌握的情况对用户进行限制部分行为、永久封号等处罚。

4、如果文件下载失败可能是弹出窗口被浏览器拦截,点击允许弹出即可,一般在网址栏位置设置

5、欢迎将网站推荐给其他人,网站持续更新更多功能敬请期待,收藏网站高效办公不迷路。

      



登录后回复

共有0条评论