首页 > 试题广场 >

java Thread中,run方法和start方法的区别,

[单选题]
java Thread中,run方法和start方法的区别,下面说法错误的是?
  • 通过调用Thread类的start()方法来启动一个线程,这时此线程是处于就绪状态,并没有运行。
  • 他们都可以实现了多线程运行。
  • run方法是thread的一个普通方法调用。
  • 调用start方法后,一旦得到cpu时间片,就开始执行run()方法。
推荐
B
        两种方法的区别:
    1.start方法
         start方法来启动线程,是真正实现了多线程, 通过调用Thread类的start()方法来启动一个线程,这时此线程处于就绪(可运行)状态,并没有运行,一旦得到cpu时间片,就开始执行run()方法。但要注意的是,此时无需等待run()方法执行完毕,即可继续执行下面的代码。所以run()方法并没有实现多线程。
    2.run方法
         run()方法只是类的一个普通方法而已,如果直接调用Run方法,程序中依然只有主线程这一个线程,其程序执行路径还是只有一条,还是要顺序执行,还是要等待run方法体执行完毕后才可继续执行下面的代码。
编辑于 2016-11-22 08:07:21 回复(3)
run方法是线程内重写的一个方法,start一个线程后使得线程处于就绪状态,当jvm调用的时候,线程启动会运行run。run函数是线程里面的一个函数不是多线程的。
发表于 2015-08-12 01:33:59 回复(0)
run()方法就是一个普通的方法,真正启动一个新线程的话是start()
发表于 2016-03-22 11:08:18 回复(1)

Thread类中的start()方法和run()方法的区别

首先明白一个线程的状态

【新建】- Thread t = new Thread()

【就绪】- t.start(); - 线程进入等待队列争夺CPU时间片后即可进入运行状态

【运行】- t.run();

【阻塞】- 线程睡眠、让权等待或等待一个事件发生(eg:用户IO操作)

【死亡】 - 程序正常结束或异常退出


start()方法让多个线程进入等待队列等待CPU时间片宏观上实现多个线程之间的并发执行在微观上多个多个线程串行

run()方法是一个线程的执行体就是一个普通的方法在运行态调用


发表于 2021-07-09 21:10:54 回复(0)
B:run方法是在本线程内,start方法才会启动新线程
发表于 2015-01-03 22:03:26 回复(0)
通过调用Thread类的start()方法来启动一个线程,这时此线程是处于就绪状态,并没有运行。
获得CPU使用权才会执行。
发表于 2015-07-20 18:52:21 回复(0)
选B start方法真正的实现了多线程,调用后此线程处于就绪状态,并没有运行,一旦获得CPU时间片,就开始执行run()方法,无需等待run()方法执行完毕,即可继续执行下面的代码。所以run()方法并没有实现多线程。run只是线程内重写的一个方法,如果直接调用run()方法的话,程序中只有主线程这一个线程,其程序执行路径只有一条,还是顺序执行,还是要等待run()执行完后执行下面的代码
发表于 2017-10-19 08:38:57 回复(0)

里需要注意Thread的start()与run()方法:

用start()方法才能真正启动线程,此时线程会处于就绪状态,一旦得到时间片,就会调用线程的run()方法进入运行状态

而run()方法只是普通的方法,如果直接调用run()方法,则会按照顺序执行主线程这一个线程

发表于 2017-07-27 13:59:31 回复(0)
B
1.run()方法:
        直接调用run()方法其实就是普通的方法调用。此时依然只有main这个主线程,和多线程没什么关系。
2.start()方法:
        调用start()方法时,才是启动了一个线程,线程此时为就绪状态,一旦获得CPU时间片,此时jvm会自动去调用相应的run()方法,进入运行状态。
发表于 2016-03-07 15:21:16 回复(0)
1、start()方法。启动线程,是真正实现了多线程,通过调用Thread类的start()方法来启动一个线程,此线程处于就绪状态,一旦得到cpu时间片,就开始执行run()方法。
2、run()方法。知识一个普通方法,要按照顺序执行。
发表于 2022-02-19 15:55:36 回复(0)
  1.start方法
          start方法来启动线程,是真正实现了多线程, 通过调用Thread类的start()方法来启动一个线程,这时此线程处于就绪(可运行)状态,并没有运行,一旦得到cpu时间片,就开始执行run()方法。但要注意的是,此时无需等待run()方法执行完毕,即可继续执行下面的代码。所以run()方法并没有实现多线程。
    2.run方法
         run()方法只是类的一个普通方法而已,如果直接调用Run方法,程序中依然只有主线程这一个线程,其程序执行路径还是只有一条,还是要顺序执行,还是要等待run方法体执行完毕后才可继续执行下面的代码。
发表于 2018-01-24 15:01:12 回复(0)
start方法用来启动线程,让线程进入就绪状态(可运行),得到cpu时间片后执行run方法,一个start方法可对应多个run,再对应多个线程 >>实现多线程!!! run方法是一个普通的方法,单线程的,对应一个线程。
发表于 2021-10-10 12:55:27 回复(0)
run()相当于一个普通的方法调用。start()会将当前线程对象置为 Runable 的状态,可以获得 CPU 时间片,执行 run()方法中的代码段。
发表于 2020-04-03 21:56:41 回复(0)
run()方法就是一个普通的方法,无论调用多少次,也只有一个线程,也就是主线程来顺序执行;
start()方法,表示启动一个线程,执行run()方法,无需等待run()执行完毕,就可以再启动其他线程,无序的执行多个run()方法,实现了多线程;
发表于 2019-08-13 15:13:27 回复(0)
调用start方法,线程处于就绪状态,等待cpu的调用,当jvm调用后,线程运行run方法,实现了多线程。
run函数是线程中的一个函数,当直接调用run函数,就只有这一个主线程,其他代码需要等run运行完之后运行,不是多线程。
发表于 2019-04-24 16:35:46 回复(0)
run方法没有实现多线程的运行
发表于 2018-11-28 11:37:04 回复(0)
B         两种方法的区别:     1.start方法          用 start方法来启动线程,是真正实现了多线程, 通过调用Thread类的start()方法来启动一个线程,这时此线程处于就绪(可运行)状态,并没有运行,一旦得到cpu时间片,就开始执行run()方法。但要注意的是,此时无需等待run()方法执行完毕,即可继续执行下面的代码。所以run()方法并没有实现多线程。     2.run方法          run()方法只是类的一个普通方法而已,如果直接调用Run方法,程序中依然只有主线程这一个线程,其程序执行路径还是只有一条,还是要顺序执行,还是要等待run方法体执行完毕后才可继续执行下面的代码。
发表于 2016-12-12 09:41:42 回复(0)
B,C选项描述的,真是无语了。
发表于 2015-08-21 16:32:54 回复(1)
直接调用 run不能实现多线程
发表于 2022-08-31 23:37:27 回复(0)
run()只是一个普通方法,start()才是开启线程
发表于 2022-06-19 09:15:38 回复(0)
两种方法的区别:
    1.start方法
         start方法来启动线程,是真正实现了多线程, 通过调用Thread类的start()方法来启动一个线程,这时此线程处于就绪(可运行)状态,并没有运行,一旦得到cpu时间片,就开始执行run()方法。但要注意的是,此时无需等待run()方法执行完毕,即可继续执行下面的代码。所以run()方法并没有实现多线程。
    2.run方法
         run()方法只是类的一个普通方法而已,如果直接调用Run方法,程序中依然只有主线程这一个线程,其程序执行路径还是只有一条,还是要顺序执行,还是要等待run方法体执行完毕后才可继续执行下面的代码。
发表于 2020-10-10 14:14:37 回复(0)