`
lyy3323
  • 浏览: 88105 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

java中Thread线程中的 start()和run()方法的区别(2)——

阅读更多
java中Thread线程中的 start()和run()方法的区别(2)——实例
2009-02-10 12:38例:
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,提高程序运行速率的!

分享到:
评论
1 楼 cicl 2011-10-12  
朋友,正文第8行应该是 t.start();吧,呵呵

相关推荐

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

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

    java中thread线程start和run的区别

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

    并发编程——认识java里的线程(csdn)————程序.pdf

    在 Java 中,线程的创建方式有多种,但是它们的主要差别在于实现 Runnable 接口或继承 Thread 类的方式。继承 Thread 类可以更好地控制线程的生命周期,而实现 Runnable 接口可以更好地分离线程的业务逻辑和线程的...

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

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

    java编程——Java线程

    当创建一个线程并启动它时,线程会执行`run()`方法中的代码。此外,Java提供了丰富的API来控制和管理线程,如`join()`, `sleep()`, `interrupt()`等方法,以及`synchronized`关键字和`wait()`, `notify()`, `...

    Java 语法总结——线程(线程)

    线程是程序执行的最小单元,每个线程都有自己的程序计数器、虚拟机栈、本地方法栈,而它们共享同一块内存区域,如堆内存和方法区。这种设计使得多线程环境下的资源利用更为高效。 二、线程的创建 1. 实现Runnable...

    java常用的代码——线程

    在Java编程语言中,线程是程序执行流的最小单元,一个标准的Java应用通常包含多个线程。本文将从给定的文件标题、描述、标签以及部分内容出发,深入探讨Java中线程的相关知识点。 ### Java中的线程基础 #### 1. ...

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

    本文将详细介绍Java线程中start和run的区别,通过示例代码帮助大家更好地理解这两个方法的作用和区别。 start方法 start方法是Thread类中的一个方法,用于启动一个新线程。当用start()开始一个线程后,线程就进入...

    经典线程例子——Java线程学习指南

    Java线程是并发编程的核心部分,它允许程序同时执行多个任务,从而提高系统效率和响应速度。本指南将深入探讨Java线程的基本概念、创建方式以及管理策略,旨在帮助初学者快速掌握线程的工作原理。 一、Java线程基础...

    在Java中创建线程有两种方法

    Java提供了两种主要的方法来创建线程,分别是直接继承自`Thread`类和实现`Runnable`接口。这两种方法各有其特点和适用场景。 1. **继承Thread类**: 当你选择继承`Thread`类时,你需要创建一个新的类,该类直接...

    Java 模拟线程并发

    在Java中,线程并发可以通过多种方式实现,包括继承Thread类、实现Runnable接口以及使用ExecutorService和Future等高级API。下面将详细探讨这些知识点。 首先,Java中创建线程主要有两种方法。一种是通过继承Thread...

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

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

    QT线程start()和run()

    ### QT线程start()与run()详解 #### 一、QT线程概述 在QT框架中,线程处理是一项非常重要的功能。QT提供了一个跨平台的解决方案——`QThread`类,使得开发者能够轻松地创建多线程应用程序,而无需担心底层操作系统...

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

    1. **`start`方法**:当我们调用`Thread`对象的`start`方法时,Java虚拟机(JVM)会创建一个新的线程来执行`run`方法中的代码。这意味着`run`方法的内容将在一个新的独立的执行上下文中运行,与调用`start`方法的...

    java多线程案例——未完成

    Java多线程是Java编程中的一个重要领域,它允许程序同时执行多个任务,从而提高系统效率和资源利用率。在这个未完成的案例中,我们可能正在探讨如何在Java中创建和管理线程,以及处理多线程环境下的并发问题。下面是...

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

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

    JAVA面试题——多线程.docx

    1. **继承Thread类**:通过继承`java.lang.Thread`类并重写其`run()`方法,将线程的具体执行逻辑放在`run()`方法内。这种方式简洁但限制较多,因为Java不支持多重继承。 ```java public class ThreadTest extends ...

    Java Thread多线程全面解析

    Java Thread多线程全面解析涵盖了Java编程中关于线程的重要概念和实践技巧。在Java中,多线程是并发编程的基础,允许程序同时执行多个任务,提高系统资源利用率和应用程序的响应速度。 线程的生命周期包括五个基本...

    java中创建线程两个方法及区别

    Java提供了多种创建线程的方式,其中最常见的是通过继承`Thread`类和实现`Runnable`接口这两种方法。下面将详细阐述这两种创建线程的方法及其区别。 ### 一、通过继承`Thread`类创建线程 当一个类继承了`Thread`类...

    Java多线程机制(讲述java里面与多线程有关的函数)

    Java多线程机制是Java编程中至关重要的一部分,它允许程序同时执行多个任务,提升应用程序的效率和响应性。以下是对各个知识点的详细说明: 9.1 Java中的线程: Java程序中的线程是在操作系统级别的线程基础上进行...

Global site tag (gtag.js) - Google Analytics