如何在 Java 中创建线程? | Java中的多线程
已发表: 2020-12-29在本文中,我们将了解 Java 中的线程并探索使线程成为可能的机制。
目录
Java中的线程
Java 中的线程特性是一个轻量级的子进程。 它被认为是最小的处理单元。 它是在程序中实现多任务处理的一种手段。 当涉及到游戏、动画等时,它是一个有用的功能。
Java 具有对创建线程和多线程的内置支持。 这是一种通过优化 CPU 空间利用率来最大限度地减少低效率和拖累的巧妙方法。 在 Java 中,这可以通过两种方式完成:
- 扩展线程类,或
- 实现可运行接口
当多个线程同时执行时,称为多线程。 这实质上允许程序的多个部分同时运行,线程的每个部分和每个线程都遵循不同的执行路径。
线程利用共享内存空间; 内存没有分配给每个部分,导致CPU使用率最大化。 此外,更改上下文不会占用太多时间。 但是,过多的线程可能会使您的 CPU 参与上下文切换,并且您的执行可能会延迟。
线程可以存在以下六种状态之一
- NEW——一旦创建了一个线程,它就以新的状态存在。 它本质上意味着线程尚未开始执行。
- RUNNING – 当一个线程正在执行或排队执行时,它处于运行状态。
- WAITING - 一个正在运行的线程有时会被暂停或暂停,以允许另一个活动发生。 wait() 或 join() 的非超时版本可以暂停线程执行。 一旦动作发生,暂停的线程就会恢复。
- TIMED-WAITING – 运行中的线程有时会暂时停止或暂停特定的持续时间。 例如,当调用 sleep() 函数时。
- BLOCKED – 当挂起的 Java 线程无法获取特定资源时,它会被阻塞并以阻塞状态存在。
- TERMINATED – 当线程完成执行时,它处于终止状态。 但是,您可以随时终止线程。
了解有关 Java 架构和组件的更多信息。

在 Java 中创建线程的好处
创建线程有几个优点。 其中一些是
- 由于线程是独立的,即使它们在共享内存空间上运行,一次执行也不会影响另一次执行。 这也意味着您可以同时执行多个操作。
- 线程是多任务处理的一种形式,可以节省时间。
- 一个线程中的错误不会影响另一个线程。
如何在 Java 中创建线程?
如上所述,有两种方法可以做到这一点:扩展线程类或实现可运行接口
线程类
Thread 类中有构造函数和方法,允许您执行操作、管理和跟踪线程。 它扩展了 Object 类,然后实现了伴随的 Runnable 接口。 线程类中存在的构造函数是:Thread()、Thread(String name)、Thread(Runnable r) 和 Thread(Runnable r, String name)。
以下是方法及其说明
| 方法 | 是用来做什么的? |
| 开始() | 开始执行 |
| 跑步() | 为线程运行操作 |
| 睡觉() | 让线程休眠给定的持续时间 |
| 加入() | 等到另一个线程终止 |
| 获得优先权() | 表示给定线程的优先级 |
| 设置优先级() | 更改给定线程的优先级 |
| 获取名称() | 返回指定线程的名称 |
| 设置名称() | 更改指定线程的名称 |
| 获取标识() | 返回给定线程的 ID |
| 活着() | 测试线程是否仍然存在于任何状态 |
| 屈服() | 暂停线程对象执行以允许另一个线程运行 |
| 暂停() | 挂起给定的线程 |
| 恢复() | 从挂起状态恢复线程 |
| 停止() | 停止给定线程 |
| 破坏() | 销毁线程组和子组 |
| 打断() | 导致线程执行中断 |
| 被中断() | 测试给定的线程执行是否被中断 |
| 中断() | 测试当前线程执行是否中断 |
| 活动计数() | 返回线程组中活动线程的数量 |
| 持有锁() | 当且仅当当前线程持有指定对象上的监视器锁时,它才返回 true。 |
| 获取状态() | 确定给定线程的状态 |
| setContextClassLoader() | 设置上下文 ClassLoader |
| getContextClassLoader() | 返回上下文 ClassLoader |
为了通过扩展 Thread 类来创建线程,首先必须创建一个扩展 java.lang.Thread 类的类。 定义此类以覆盖 run() 方法。 接下来,通过调用 start() 方法在新类中创建一个对象以开始线程执行。

必读:你应该检查的 Java 模式程序
可运行接口
这是创建线程的最简单方法。 实现 Runnable 接口只需要一种方法:run()
为了声明它,我们写
公共无效运行()

在 run() 中,我们继续编写代码来创建一个新线程。
报名参加世界顶尖大学的软件工程课程。 获得行政 PG 课程、高级证书课程或硕士课程,以加快您的职业生涯。
线程类与可运行接口
Thread 类阻止您扩展任何其他类。 这是因为在 Java 中无法实现多重继承。 但是,当我们实现 Runnable 接口时,情况并非如此,您可以继续扩展其他类。
扩展 Thread 类使您可以访问几个重要的方法,从而增强线程的功能。 例如,yield()、stop()、isalive()、interrupt()。 Runnable 接口只有一个相当有限的方法。
包起来
如果您有兴趣了解有关 Java 全栈软件开发的更多信息,请查看 upGrad 和 IIIT-B 的全栈软件开发执行 PG 计划,该计划专为在职专业人士设计,提供 500 多个小时的严格培训,9+项目和任务、IIIT-B 校友身份、实用的实践顶点项目和顶级公司的工作协助。

