`
libingye
  • 浏览: 4135 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

java中run()和start()的区别

阅读更多
class NewThread implements Runnable {
    Thread t;
    public NewThread() {
      t = new Thread(this,"Demo thread");
        System.out.println("Child thread : " + t);
         t.run();
    }
    public void run(){
        try{
            for( int i = 5; i > 0; i --){
            System.out.println("Child thread :" + i);
            Thread.sleep(500);
            }

        }catch(InterruptedException e){
       System.out.println("Child interrupted.");
        }
      System.out.println("Exiting child thread.");

    }
}

public class TestDemo{
    public static void main(String args[]){
         new NewThread();
         try{
         for( int i = 5; i > 0; i --){
            System.out.println("Main thread :" + i);
            Thread.sleep(1000);
            }
        }catch(InterruptedException e){
        System.out.println("Main interrupted.");
        }
        System.out.println("Exiting Main thread.");
    }
}

    这是一个实现多线程的程序,运行结果如下:
    Child thread : Thread[Demo thread,5,main]
    Main thread :5
    Child thread :5
    Child thread :4
    Main thread :4
    Child thread :3
    Child thread :2
    Main thread :3
    Child thread :1
    Exiting child thread.
    Main thread :2
    Main thread :1
    Exiting Main thread.

    试想,如果把 start()改成run()会出现什么结果?
    修改之后运行结果:
    Child thread : Thread[Demo thread,5,main]
    Child thread :5
    Child thread :4
    Child thread :3
    Child thread :2
    Child thread :1
    Exiting child thread.
    Main thread :5
    Main thread :4
    Main thread :3
    Main thread :2
    Main thread :1
    Exiting Main thread.
    程序运行成为了单线程顺序执行。为什么?
    start方法:用来启动一个线程, 这时此线程是处于就绪状态, 并没有运行。 然后通过此Thread类调用方法run()来完成其运行操作的, 这里方法run()称为线程体, 它包含了要执行的这个线程的内容, run方法运行结束, 此线程终止, 而CPU再运行其它线程,
    直接用run方法: 这只是调用一个方法而已, 程序中依然只有主线程--这一个线程, 其程序执行路径还是只有一条, 这样就没有达到写线程的目的。
    记住:线程就是为了更好地利用CPU,提高程序运行速率的!

让一个类继承Thread,重写run()方法,然后调用时使用:new ThreadImp().start()方法
来启动该类的实例!不要用new ThreadImp().run() !!!
分享到:
评论

相关推荐

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

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

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

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

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

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

    java中thread线程start和run的区别

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

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

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

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

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

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

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

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

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

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

    首先,我们要明确`start`方法和`run`方法在Java线程中的作用: 1. **`start`方法**:当我们调用`Thread`对象的`start`方法时,Java虚拟机(JVM)会创建一个新的线程来执行`run`方法中的代码。这意味着`run`方法的...

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

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

    线程中start方法和run方法的区别

    线程中start方法和run方法的区别

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

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

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

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

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

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

    java web start

    Java Web Start的工作原理基于“点击即运行”(Click-and-Run)的概念,它通过网络下载Java应用程序,并自动管理应用程序的更新。当用户点击一个链接时,Java Web Start会检测用户的系统是否已经安装了必要的Java...

    Java多线程中start()函数的作用是什么?.docx

    Java多线程中start()函数的作用 在 Java 编程语言中,多线程编程是非常重要的概念,它允许程序同时执行多个任务,从而提高程序的效率和性能。在 Java 中,线程可以通过扩展 Thread 类或实现 Runnable 接口来创建。...

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

    在Java编程语言中,多线程是并发执行任务的关键特性,极大地提高了程序的效率和响应速度。本小练习主要关注如何通过继承`Thread`类来创建并运行双线程,以便从1累加到100。下面我们将深入探讨这个话题。 首先,`...

    Java中Runnable和Thread的区别

    在Java编程语言中,多线程的实现有多种方式,其中最常见的是通过继承`Thread`类和实现`Runnable`接口。这两种方法各有其特点和适用场景,理解它们之间的区别对于编写高效、可维护的多线程应用至关重要。 ### 继承...

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

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

    Exe.rar_java exe_run

    描述中提到,“this code maked the use of java to run any exe file”,表明这个代码实现了通过Java来调用并执行任何Windows平台下的EXE程序。在Java中,这个功能通常涉及到使用`Runtime`类或`ProcessBuilder`类来...

Global site tag (gtag.js) - Google Analytics