深入理解Java线程:run 与 start 方法的区别

🌟 欢迎来到我的博客! 🌈

💡 探索未知,分享知识 💫


深入理解Java线程:runstart 方法的区别

在Java的世界里,多线程编程是一个强大的工具,可以帮助我们高效地处理并行任务和复杂的处理流程。Thread 类是Java提供的用于操作线程的核心类,而理解其中的 runstart 方法对于掌握多线程编程至关
重要。

在这里插入图片描述


run 方法和 start 方法的基本区别

首先,我们需要明确 run 方法和 start 方法的基本职责:

  • run 方法定义了线程的执行行为,即线程启动后需要执行的具体操作。
  • start 方法负责启动一个新的线程,并让这个新线程去执行 run 方法中定义的代码。
这里的关键区别在于 : run 方法本身并不会创建或启动任何新的线程,它只是一个普通的方法调用。 而 start 方法才是真正触发线程并发执行的关键。

代码示例解析

为了更好地理解这两者的区别,让我们来看看下面这段简单的代码:

public class ThreadDemo5_3 {
    public static void main(String[] args) {
        Thread t = new Thread(() -> {
            while (true) {
                System.out.println("hello t");
                try {
                    Thread.sleep(1000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        });
        
		//t.run();
        t.start();  // 启动新线程
        System.out.println("hello main");
    }
}

在这里插入图片描述
执行start()时,通过jconsole来查看线程创建情况

不难发现会有线程Thread_0运行

在这里插入图片描述

在这里插入图片描述
执行run()时,通过jconsole来查看线程创建情况

只有主线程mian在运行,并没有新的线程被创建

在这里插入图片描述

在第一个例子中,我们创建了一个匿名 Thread 对象 t,并重写了它的 run 方法来定义线程的行为。接着,我们通过调用 t.start() 来启动这个线程。

当我们运行这段代码时,将会看到两件事几乎同时发生:

1. 新线程 t 开始执行并打印出 “hello t”,每隔一秒重复一次。
2. 主线程继续执行,打印出 “hello main”。

这个并发执行的效果,正是通过 `start` 方法启动新线程实现的。如果我们将 `t.start()` 替换为 `t.run()`,就会发现 "hello t" 不再是并行打印,而是会在 "hello main" 打印之后,主线程中按顺序打印。

总结

通过以上分析和示例,我们可以清楚地看到 run 方法和 start 方法之间的区别。start 方法是多线程编程的核心,它启动一个新线程并使得线程的运行与其他线程并行进行。而直接调用 run 方法则仅仅是在当前线程中顺序执行 run 方法中的代码,不会产生新的线程执行流。

掌握这两个方法的区别对于使用Java进行多线程编程非常重要,它可以帮助我们更好地设计程序结构,充分利用多线程带来的并行处理能力。

  • 10
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

StoilSweet

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值