java线程中的run方法什么时候调用

如上面所说

调用start()时开启线程,当该线程获取执行资源后就开始执行run方法;就是多线程会竞争资源,谁获得资源谁就执行,就是运行run方法
温馨提示:答案为网友推荐,仅供参考
第1个回答  2017-04-12

源码分析:

publish class Thread implements Runnable {

    private Runnable target;

    public synchronized void start() {
         .
         .
         //调用本地方法,本地方式负责创建线程及回调run方法
         nativeCreate(this, stackSize, daemon);
         .
         .
    }
    /**
     *该方法没有明确的java代码回调痕迹,是在本地方法
     * nativeCreate(this, stackSize, daemon)中调用的
     */
    @Override
    publish void run() {
        if (target != null) {
            target.run();
        }
    }
}

第2个回答  2016-08-05
Thread对象调用 start方法后,自动调用
创建一个新线程可以通过调用线程对象的run方法
非并发执行:直接调用线程对象的run方法,实际上是在当前线程中顺序执行run方法中的代码,这样的执行方式并不是并发执行。未创建新线程:仅仅调用run方法并不会启动一个新的线程,而是在当前线程中执行代码。正确的方式:调用start方法:启动新线程:调用线程对象的start方法会启动一个新的线程,并在新的线

java中Thread线程中的 start和run方法的区别
当调用Thread对象的start方法时,会启动一个新的线程,并在该线程上执行run方法中的代码。start方法会初始化线程,然后调用run方法开始执行线程内的代码。值得注意的是,start方法并不会直接执行run方法,而是将run方法的执行权交给线程,让其独立运行。run方法是线程执行的入口,而start方法则是启动线程的指...

java线程中run 和start有什么区别
在Java线程中,start()和run()方法有着本质的区别。使用start()方法时,会立即返回,并启动一个新线程来执行run()方法。这意味着run()方法是在新线程中独立运行的。然而,直接调用run()方法则不会创建新的线程,而是直接在当前线程中执行run()方法,因此执行完毕后才会返回。基于这一点,使用start()...

Java Thread的start和run方法的区别
当调用start()方法时,Java虚拟机会调用线程的run()方法,并使得该线程开始执行。start()方法的执行结果是两个线程并发地运行,当前线程从调用返回给start方法后,另一个线程开始执行其run()方法。多次启动一个线程是非法的,特别是当线程已经结束执行后,不能再重新启动。调用Thread类的start()方法启动...

在java中启动线程使用run()还是start()?
另一方面,run()方法是线程类中的一个普通方法,它代表了线程执行的任务。当调用run()时,它会执行定义在该方法中的代码。通常,run()方法不会被直接调用,而是通过start()方法启动线程后,由JVM自动调用。值得注意的是,run()方法不能用来停止线程,因为它并不控制线程的生命周期。如果需要停止线程,...

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

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

JAVA中thread的run和start方法有什么区别?
```java public class TestThread1 { public static void main(String[] args) { Runner1 r = new Runner1();\/\/ r.run(); \/\/ 这是方法调用,而不是开启一个线程 Thread t = new Thread(r); \/\/ 调用了Thread(Runnable target)方法,并将Runner1对象作为目标 t.start(); \/\/ 启动线程 ...

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

Java线程中run和start方法的区别?
通过调用Thread类的\\x0d\\x0astart()方法来启动一个线程,这时此线程处于就绪(可运行)状态,并没有运行,一旦得到cpu时间片,就开始执行run()方法,这里方法 \\x0d\\x0arun()称为线程体,它包含了要执行的这个线程的内容,Run方法运行结束,此线程随即终止。\\x0d\\x0a 2) run:\\x0d\\x0...

相似回答