`
nnwq
  • 浏览: 208929 次
社区版块
存档分类
最新评论

Thread的run()和start()方法

 
阅读更多

看清楚Thread类中run()和start()方法的区别:
run()方法:如果在其他地方调用run方法,就是调用一个普通方法。和其他调用方法一样,比如person.eat(); 而且直接调用run可以重复多次调用;
start()方法:启动一个线程,调用该Runnable对象的run()方法,不能多次启动一个线程。

 

上个例子,注释说的很清楚!

 

public class ThreadTest {
    
    /**
     * 观察直接调用run()和用start()启动一个线程的差别 
     * 
     * @param args
     * @throws Exception
     */
    public static void main(String[] args){
        Thread thread=new ThreadDemo();
        //第一种
        //表明: run()和其他方法的调用没任何不同,main方法按顺序执行了它,并打印出最后一句
        //thread.run();
        
        //第二种
        //表明: start()方法重新创建了一个线程,在main方法执行结束后,由于start()方法创建的线程没有运行结束,
        //因此主线程未能退出,直到线程thread也执行完毕.这里要注意,默认创建的线程是用户线程(非守护线程)
        //thread.start();
        
        //第三种
        //1、为什么没有打印出100句呢?因为我们将thread线程设置为了daemon(守护)线程,程序中只有守护线程存在的时候,是可以退出的,所以只打印了七句便退出了
        //2、当java虚拟机中有守护线程在运行的时候,java虚拟机会关闭。当所有常规线程运行完毕以后,
        //守护线程不管运行到哪里,虚拟机都会退出运行。所以你的守护线程最好不要写一些会影响程序的业务逻辑。否则无法预料程序到底会出现什么问题
        //thread.setDaemon(true);
        //thread.start();
        
        //第四种
        //用户线程可以被System.exit(0)强制kill掉,所以也只打印出七句
        thread.start();
        System.out.println("main thread is over");
        System.exit(1);
    }
    
    public static class ThreadDemo extends Thread{
        @Override
        public void run() {
            for (int i = 0; i < 100; i++) {
                System.out.println("This is a Thread test"+i);
            }
        }
    }
}

 

4
2
分享到:
评论

相关推荐

    Java多线程——Thread类中run()方法和start()方法的区别.docx

    在Java多线程编程中,`Thread` 类的 `run()` 方法和 `start()` 方法扮演着不同的角色,它们之间的区别是理解并发执行的关键。 首先,`start()` 方法是真正启动新线程的方法。当你调用 `Thread` 对象的 `start()` ...

    Android:Handler的post()方法和Thread的start()方法执行Thread的run()方法的区别

    * 此时只会会执行Run()方法,但是不会开启新的线程 */ //Handler h = new Handler(); //h.post(r); /* * 在java中真正开启线程的方法是这样的。 */ Thread t = new Thread(r); t.start(); ...

    Java中Thread.start()和Thread.run()的区别.docx

    在Java编程语言中,理解和掌握线程的使用是至关重要的,特别是`Thread.start()`和`Thread.run()`这两个方法。它们在多线程编程中扮演着关键角色,但有着明显的区别。 首先,`Thread.start()`方法的主要作用是启动一...

    java中thread线程start和run的区别

    `Thread`类是Java中用于创建和管理线程的核心类,而`start()`和`run()`方法是与线程执行密切相关的方法,它们之间存在显著的区别。 首先,`run()`方法是`Runnable`接口或`Thread`类中的一个成员方法。当你需要创建...

    Thread中start()和run()的区别_动力节点Java学院整理

    start() : 它的作用是启动一个新线程,新线程会执行相应的run()方法。...run() : run()就和普通的成员方法一样,可以被重复调用。单独调用run()的话,会在当前线程中执行run(),而并不会启动新线程!

    QT线程start()和run()

    通过理解`start()`和`run()`的方法以及如何正确地使用它们,可以有效地利用多线程提高程序的性能和响应性。同时,还需要注意到线程的生命周期管理,特别是如何安全地结束线程,以避免资源泄露或其他潜在的问题。

    java thread start()和run()方法简析

    本文将深入探讨`start()` 和 `run()` 方法的区别及其在多线程环境中的作用。 1. **start() 方法** `start()` 方法是启动线程的关键。当你调用 `Thread` 对象的 `start()` 方法时,Java虚拟机(JVM)会执行以下几...

    Java Thread中start()和run()的区别_动力节点Java学院整理

    在Java多线程编程中,理解`Thread`类的`start()`和`run()`方法的区别至关重要。这两个方法在实现线程并发执行时起到不同的作用。 首先,`start()`方法是用于启动一个新的线程。当你调用`start()`方法时,Java虚拟机...

    Java Thread 的 run() 与 start() 的区别.docx

    Java线程中的`run()`和`start()`方法是线程编程中的关键概念,它们之间有着显著的区别。首先,我们来看一下这两个方法的基本解释。 1. `start()`方法:`start()`是真正启动线程的关键,它使得线程进入就绪(可运行...

    java线程中start和run的区别详解

    在Java编程中,线程是一个基础概念,start和run是两个常用的方法,但是它们之间的区别却经常被忽视。本文将详细介绍Java线程中start和run的区别,通过示例代码帮助大家更好地理解这两个方法的作用和区别。 start...

    Java线程的start方法回调run方法的操作技巧

    面试中常见的问题在于理解`start()`方法与`run()`方法的区别。这里我们将详细探讨这两个方法以及它们在Java线程中的作用。 首先,`start()`方法是开启新线程的关键,而`run()`方法则是线程执行的具体任务。当你调用...

    JAVA面试题 start()和run()详解

    本文主要介绍了JAVA面试题中关于启动线程的start()和run()方法的详解。通过示例代码,详细介绍了这两个方法的作用和区别,以及它们在启动线程时的执行过程。 第一点,start()方法和run()方法的区别。在Java中,...

    java基本教程之Thread中start()和run()的区别 java多线程教程

    在理解Thread类的start()和run()方法的区别时,我们需要深入探讨它们的工作原理。 首先,start()方法的主要作用是启动一个新的线程并执行该线程的run()方法。当调用start()时,Java虚拟机(JVM)会执行线程的初始化...

    java的thread类重写run方法的双线程从1加到100

    `start()`方法不会立即执行`run()`方法,而是将它放入线程的执行队列中,等待JVM调度执行。由于线程的并发性,两个线程可能会交错执行,因此输出结果可能会有不同顺序,但最终加法的结果总和应该为5050。 在多线程...

    Java中启动线程start和run的两种方法

    Java中启动线程start和run的两种方法 Java 中启动线程有两种方法,即继承 Thread 类和实现 Runnable 接口。由于 Java 无法实现多重继承,所以一般通过实现 Runnable 接口来创建线程。但是,无论哪种方法都可以通过 ...

    java 线程中start方法与run方法的区别详细介绍

    理解和掌握如何正确使用`start`方法和`run`方法对于编写高效的多线程程序至关重要。本文将深入探讨这两个方法的区别,帮助初学者更好地理解Java线程的工作原理。 首先,我们要明确`start`方法和`run`方法在Java线程...

    Java线程中start和run方法全面解析

    本文将全面解析Java线程中的`start`和`run`方法,以及自定义线程的两种常见方式。 首先,自定义线程有两种主要方法: 1. 实现`Runnable`接口:创建一个类实现`Runnable`接口,并重写`run`方法。然后,将这个实现了...

    认识Thread和Runnable

    Thread 的 start 和 run 方法: start 方法用来启动线程,真正实现了多线程运行,这时无需等待 run 方法体代码执行完毕而直接继续执行下面的代码。通过调用 Thread 类的 start() 方法来启动一个线程,这时此线程...

    Python run()函数和start()函数的比较和差别介绍

    在Python的多线程编程中,`run()`和`start()`是两个非常关键的方法,它们在处理线程执行方面有着显著的区别。理解这两个方法的工作原理对于编写高效的并发程序至关重要。 首先,`run()`方法并不是用来启动线程的,...

    QT多线程的实现方式:QThread run优雅的创建与退出QT多线程

    run()方法是线程执行的主要逻辑,当调用QThread的start()方法时,系统会调用这个方法。例如: ```cpp class MyThread : public QThread { Q_OBJECT public: explicit MyThread(QObject *parent = nullptr) : ...

Global site tag (gtag.js) - Google Analytics