首页 > 试题广场 >

有以下程序段,则下面正确的选项是()

[不定项选择题]

有以下程序段, 则下面正确的选项是()

public class MyThead extends Thread{
	public static void main(String[] args) {
		MyThead t=new MyThead();
		MyThead s=new MyThead();
		t.start();
		System.out.println("one.");
		s.start();
		System.out.println("two.");
	}
	public void run() {
		System.out.println("Thread");
	}
}

  • 编译失败
  • 程序运行可能结果为:
    one.
    Thread
    two.
    Thread
  • 程序运行可能结果是:
    one.
    two.
    Thread
    Thread
  • 程序运行结果不稳定
就没人只选了个D吗。。。
发表于 2017-09-12 14:50:11 回复(109)
选了个A.妈的。
发表于 2017-03-24 19:38:09 回复(46)
start()是开启线程,等待获得时间片,一到获得时间片就执行。所以可能一开启就获得了时间片执行,也有可能等到two输出后才获得了时间片。所以BC都可能,所以D也正确。
编辑于 2017-05-26 15:27:58 回复(11)
就只有我一个人发现B的Thred拼错了么,还在纠结是不是考察答题者的细心。。。
发表于 2017-02-27 23:00:56 回复(17)
别忘了 main也是一个线程,本题实际上是三个线程在抢占执行😃😄
发表于 2017-04-25 14:17:39 回复(2)
答案:BCD。这题只需要看"one."和"two."顺序就可以了,因为System.out.println("one.");System.out.println("two.");同在一个线程A(假设命名为A),所以必须顺序输出。新启动的两个子线程(注意重写了run方法)与线程A构成多并发,执行顺序无法预知,所以程序运行结果不稳定。一句话,线程内顺序执行,多线程间并发执行。严格来说,D选项也是不准确的,因为无法保证"one."在"two."前输出。望更正。
编辑于 2018-04-13 17:55:08 回复(2)
两个start方法之后一共三个线程就绪:主线程,线程s,线程t,处于就绪状态中的线程并没有开始运行,至于什么时候开始运行,取决于取决于JVM里线程调度器的调度。
发表于 2017-07-17 22:39:38 回复(0)
在Java当中,线程通常都有五种状态,创建、就绪、运行、阻塞和死亡:   第一是创建状态。在生成线程对象,并没有调用该对象的start方法,这是线程处于创建状态。   第二是就绪状态。当调用了线程对象的start方法之后,该线程就进入了就绪状态,但是此时线程调度程序还没有把该线程设置为当前线程,此时处于就绪状态。在线程运行之后,从等待或者睡眠中回来之后,也会处于就绪状态。   第三是运行状态。线程调度程序将处于就绪状态的线程设置为当前线程,此时线程就进入了运行状态,开始运行run函数当中的代码。   第四是阻塞状态。线程正在运行的时候,被暂停,通常是为了等待某个事件的发生(比如说某项资源就绪)之后再继续运行。sleep,suspend,wait等方法都可以导致线程阻塞。   第五是死亡状态。如果一个线程的run方法执行结束或者调用stop方法后,该线程就会死亡。对于已经死亡的线程,无法再使用start方法令其进入就绪。 调用start()后,线程会被放到等待队列,等待CPU调度,并不一定要马上开始执行,只是将这个线程置于可动行状态。然后通过JVM,线程Thread会调用run()方法,执行本线程的线程体。先调用start后调用run。
发表于 2019-06-06 10:14:33 回复(2)
start()是开启线程,等待获得时间片,一到获得时间片就执行。所以可能一开启就获得了时间片执行,也有可能等到two输出后才获得了时间片。所以BC都可能,所以D也正确。
发表于 2017-07-06 20:54:52 回复(1)
线程对象start并不是马上执行,而是处于就绪态,一旦抢夺到CPU的才能执行  
发表于 2017-08-13 18:13:06 回复(0)
总共有三个线程,main,Thread-0,Thread-1三个线程,start方法让线程处于就绪状态,而何时运行则取决与JVM中线程调度机制。
发表于 2018-06-29 15:59:17 回复(0)
发表于 2018-01-29 14:29:01 回复(3)
不稳定不就行了么.还来什么BC的可能选项

发表于 2017-04-29 13:06:39 回复(1)
注意调用的是start()方法,是main主线程里依次启动了2个子线程,所以选BCD。
如果调用的是run()方法,这里没有选项。
编辑于 2016-12-28 16:59:07 回复(5)

这题最好作为单选题,D选项就包括BC选项了

发表于 2020-07-29 10:19:13 回复(0)
线程运行后结果不稳定,完毕。
编辑于 2018-11-09 16:41:23 回复(0)
D不是包括了BC吗?
无语
发表于 2018-10-27 19:48:12 回复(0)
只选了一个D,以为是单选😶😶
发表于 2022-03-19 08:22:24 回复(0)
start只是开启也就到进去到就绪状态,至于什么时候运行不确定
发表于 2021-03-07 01:05:42 回复(0)
start()是开启线程,等待获得时间片,一到获得时间片就执行。所以可能一开启就获得了时间片执行,也有可能等到two输出后才获得了时间片。所以BC都可能,所以D也正确。
发表于 2021-01-26 08:40:26 回复(0)