java中线程的run()方法

它的具体作用和工作原理是什么??
麻烦高手详细点,谢谢...

当一个线程调用它的start()方法后,虚拟机就会去调用这个线程中的run()方法。
如myThread是一个线程对象,调用myThread.start();后,当CPU轮到这个线程使用时,虚拟机就会去调用这个线程的run()方法。
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2018-11-04
上面几个说的也是我要说的几点,

run() 方法是不用参数的,不用传他就会知道。

因为线程里边大多都是死循环,和主线程同步运行。(当然实际不是这样的。但可以这样理解)

比如:定义一个用于转换状态的属性。

static final int STATE_GAME_RUN = 0;
static final int STATE_GAME_OVER = 1;

int state;

run 方法里边有这样的:
switch(state)
case STATE_GAME_RUN :
System.out.println("游戏进行中");
break;
case STATE_GAME_OVER:
System.out.println("游戏结束");
break;

当主线程里边state改变时,线程里边马上就会知道,还用传本回答被网友采纳
第2个回答  2015-12-07

run()方法:在本线程内调用该Runnable对象的run()方法,可以重复多次调用;

package com.ljq.test;

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);
            }
        }
    }
}

第3个回答  2011-02-17
当一个线程调用它的start()方法后,虚拟机就会去调用这个线程中的run()方法。
第4个回答  2011-02-15
线程执行时程序需要做的步骤,通过start()方法可以调用到run()
java线程中run 和start有什么区别
在Java线程中,start()和run()方法有着本质的区别。使用start()方法时,会立即返回,并启动一个新线程来执行run()方法。这意味着run()方法是在新线程中独立运行的。然而,直接调用run()方法则不会创建新的线程,而是直接在当前线程中执行run()方法,因此执行完毕后才会返回。基于这一点,使用s

java中线程的run()方法是什么?
\\x0d\\x0a\\x0d\\x0a因为线程里边大多都是死循环,和主线程同步运行。(当然实际不是这样的。但可以这样理解)\\x0d\\x0a\\x0d\\x0a比如:定义一个用于转换状态的属性。\\x0d\\x0a\\x0d\\x0astatic final int STATE_GAME_RUN = 0;\\x0d\\x0astatic final int STATE_GAME_OVER = 1;\\x0...

在java中启动线程使用run()还是start()?
在Java中启动线程,应当使用start()方法。这个方法会让线程所代表的虚拟处理机进入可运行状态,也就是说,该线程可以在Java虚拟机(JVM)的调度下被执行。不过,这并不意味着线程会立刻开始执行,它还需要等待调度机会。这里的关键在于,start()不会直接执行线程的run()方法,而是在一个适当的时间点将其...

Java线程中run和start方法的区别?
并且run()方法必须是public访问权限,返回值类型为void.。\\x0d\\x0a\\x0d\\x0a两种方式的比较 :\\x0d\\x0a\\x0d\\x0a实际中往往采用实现Runable接口,一方面因为java只支持单继承,继承了Thread类就无法再继续继承其它类,而且Runable接口只有一个run方法;另一方面通过结果可以看出实现Runable接口才是...

JAVA中thread的run和start方法有什么区别?
1. 在Java中,通过调用Thread类的`start()`方法来启动一个线程。这个方法不仅调用了线程的`run()`方法,而且还会执行一系列的初始化操作,确保线程可以正确地进入运行状态。如果直接调用`run()`方法,它仅仅会作为普通的方法被顺序执行,不会启动一个新的线程。2. `run()`方法是线程的入口点,它...

Java Thread的start和run方法的区别
run()方法或main()方法结束后,线程进入终止状态。当线程调用sleep()方法或其它线程的join()方法时,会进入阻塞状态,等待资源或被唤醒。调用wait()方法后,线程会进入等待队列,释放所有资源,等待被唤醒。调用stop方法使线程进入消亡状态,但不推荐使用stop方法,可以通过run()方法内的条件来实现线程的...

java中线程的run()方法
当一个线程调用它的start()方法后,虚拟机就会去调用这个线程中的run()方法。如myThread是一个线程对象,调用myThread.start();后,当CPU轮到这个线程使用时,虚拟机就会去调用这个线程的run()方法。

启动一个线程是用run()还是start()? 它们分别表示什么意思?
在Java编程中,当我们需要启动一个线程时,正确的做法是调用线程对象的start()方法,而不是直接调用重写过的run()方法。直接调用run()方法并不能真正启动线程,它只是执行run()方法中的代码,线程不会进入运行状态。start()方法的作用是让Java虚拟机(JVM)创建一个新线程,并启动这个新线程来执行该...

java启动一个线程是用run()还是start()?run()和start()的区别?
线程就进入就绪状态,使线程所代表的虚拟处理机处于可运行状态,这意味着它可以由JVM调度并执行。这并不意味着线程就会立即运行。当cpu分配给它时间时,才开始执行run()方法(如果有的话)。START()是方法,它调用RUN()方法.而RUN()方法是你必须重写的. run()方法中包含的是线程的主体 ...

Java中Runnable和Thread的区别
在Java中实现多线程有两种主要方法:1. 继承`Thread`类并重写`run()`方法。这种方法的一个缺点是它限制了类的继承,因为Java不支持多继承,这意味着一个类只能有一个基类。2. 实现`Runnable`接口并覆盖`run()`方法,然后将该`Runnable`对象作为参数传递给`Thread`类的构造函数以创建一个新的线程。

相似回答