Java 中的主线程2024年9月10日 | 阅读 6 分钟 Java 中的主线程是任何 Java 程序的重要组成部分。当 Java 程序启动时,该线程会自动创建,并维护应用程序的 main() 方法。main() 方法作为程序的入口点,是程序启动时使用的初始方法。 主线程作为单个线程工作,这意味着每行代码都是按顺序执行的。该线程的其他名称是“主应用程序线程”和“主线程”。 程序可能需要的任何其他线程都必须由主线程创建和启动。它还负责组织这些线程的执行方式并确保它们有效地运行。 Java 主线程的属性
如何控制主线程在 Java 中,当 Java 程序启动时,Java 虚拟机 (JVM) 会自动创建主线程。但是,您可以使用 Java 语言提供的各种方法和技术来控制主线程的行为。以下是一些在 Java 中控制主线程的方法: 1) Sleep() 方法可以使用 sleep() 函数将主线程的执行暂停设定的时间。这对于添加延迟或规划其他线程的运行时间很有用。 算法 步骤 1: 将变量“sleepTime”初始化为要暂停主线程执行的所需毫秒数。 步骤 2: 在主线程上调用 sleep() 方法,并将 sleepTime 值作为参数传递。 步骤 3: 主线程的执行将暂停 sleep() 方法设定的持续时间。 步骤 4: sleep 时间结束后,主线程将恢复执行,继续执行下一条语句。 实施 上述步骤的实现如下所示 文件名: MainThreadSleepExample.java 输出 Start of main thread End of main thread 解释 在此示例中,主线程使用 sleep() 方法暂停了 5 秒钟。程序在主线程开始时打印一条消息,在主线程结束时打印另一条消息,中间有 5 秒延迟。 2) Join() 方法可以使用 join() 方法来延迟主线程的执行,同时等待其他线程完成。这对于协调多个线程的执行很有用。 算法 步骤 1: 创建一个需要先完成才能让主线程继续执行的线程实例。 步骤 2: 现在使用 start() 方法启动线程。 步骤 3: 现在我们将调用线程对象上的 join() 方法。 步骤 4: join() 方法将挂起主线程的执行,直到线程对象完成处理。 步骤 5: 线程对象执行完成后,主线程将恢复执行,继续执行下一条语句。 实施 上述步骤的实现如下所示 文件名: MainThreadJoin.java 输出 Start of main thread Start of other thread End of other thread End of main thread 解释 在此示例中,主线程创建了一个新线程,并使用 join() 方法等待其完成。新线程通过暂停 5 秒来模拟一些工作,然后完成。 3) Interrupt 方法可以使用 interrupt() 技术来中断主线程或附加线程。这对于实现线程取消或终止很有用。 算法 步骤 1: 创建一个需要中断的线程实例。 步骤 2: 现在使用 start() 方法启动线程。 步骤 3: 调用线程对象上的 interrupt() 方法来中断其执行。 步骤 4: 当线程被中断时,标志将被设置为 true。 步骤 5: 要查看线程是否被中断,请使用 isInterrupted() 函数检查中断标志。 步骤 6: 适当地处理线程中断,例如通过优雅地停止线程或抛出异常。 实施 上述步骤的实现如下所示 文件名: MainThreadInterrupt.java 输出 Start of main thread Start of other thread Doing some work Doing some work End of main thread Thread interrupted End of other thread 解释 在此示例中,主线程创建了一个新线程,并在 2 秒后中断了它。新线程通过每秒打印一条消息来模拟工作,直到被中断。 4) 使用死锁场景当两个或多个线程等待对方释放它们已经拥有的对象时,就会发生死锁。当两个或多个线程持有不同对象的锁并试图获取其他线程持有的对象的锁时。 算法 步骤 1: 启动程序。 步骤 2: 在 main 方法中,打印一条语句,指示您正在进入死锁。 步骤 3: 将当前线程加入自身。 步骤 4: 由于 join 方法将在其上调用的线程终止之前阻塞,因此这将导致死锁。 步骤 5: 程序将一直卡在死锁中,直到手动终止。 步骤 6: 如果抛出 InterruptedException,请打印异常的堆栈跟踪。 步骤 7: 结束程序。 实施 上述步骤的实现如下所示 文件名: DeadlockMain.java 输出 you are entering into the deadlock 解释 语句“Thread.currentThread().join()”指示主线程等待自身终止,从而导致死锁,主线程将无限期地等待自身完成。 |
给定了输入字符串 inputStr。该字符串 inputStr 只包含 '[', ']', '{', '}', '(', 和 ')'. 我们的任务是确定字符串 inputStr 是否有效。字符串要有效,必须满足以下条件...
阅读 6 分钟
? 在 Java 中,SSL 证书可以定义为一种数字证书,它用于在服务器和使用 SSL/TLS(安全套接层/传输层安全)协议的客户端之间提供安全、加密和连接。在各个领域...
5 分钟阅读
提供的字符串的任务是在 Java 中将一个新字符串插入到给定字符串的特定索引处。示例 1:输入:StringOriginal = "Hello World",InsertedString = "Welcome To ",Atindex = 5 输出:插入另一个字符串后的字符串是 "Hello, Welcome To World." 示例 2:输入:StringOriginal...
5 分钟阅读
Collection 类中的 Comparator 机制中的 sort() 方法按降序对数据进行排序。如果我们想在考虑用户定义对象排序的边界条件的情况下实现泛型目标,我们可以使用 Comparator 接口。...
阅读 3 分钟
螺旋式遍历矩阵是指以圆形模式遍历元素,从左上角开始,沿着顶行向右移动。在每次行或列遍历之后,调整边界,并切换方向,持续进行,直到所有元素...
阅读 10 分钟
什么是 JRE? Java 运行时环境 (JRE) 是 Java 开发工具包 (JDK) 的一部分。它是一个免费提供的软件分发包,其中包含 Java 类库、特定工具和独立的 JVM。它是设备上运行 Java 的最常见环境...
阅读 4 分钟
? 在 Java 中,我们使用数组来存储相同数据类型的元素。有时需要声明一个空数组,或者在不使用任何值对其进行初始化的情况下生成一个数组。在本节中,我们将学习如何声明一个空数组...
5 分钟阅读
在 Java 中清除屏幕通常涉及将特殊控制字符打印到控制台,从而触发终端或命令提示符清除其内容。但是,Java 的标准库并未提供清除屏幕的内置方法。相反,我们可以使用特定于平台的……
阅读 6 分钟
? 序列化是 Java 中的一项重要功能,它允许将对象转换为字节流,然后可以存储或传输。在面向对象编程中,有时可能需要使特定字段可序列化以确保其状态...
阅读 3 分钟
java.time.chrono.JapaneseDate 具有 isSupported() 方法。JapaneseDate 类用于确定给定的日历字段是否受支持。语法:public boolean isSupported(TemporalField field) 参数:上述函数允许我们检查给定的日期是否与此类型的日期兼容...
阅读 2 分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India