黑马程序员技术交流社区

标题: 一道入学测试题。(已提交,非作弊) [打印本页]

作者: 周靖轩    时间: 2014-9-17 18:26
标题: 一道入学测试题。(已提交,非作弊)
  1. 5、 分析以下程序运行结果,说明原理。(没有分析结果不得分)

  2.     public class ThreadTest {
  3.         public static void main(String args[]) {
  4.         MyThread t = new MyThread();
  5.         t.run();
  6.         t.start();
  7.         System.out.println("A");
  8.         }
  9.     }

  10.     class MyThread extends Thread {
  11.         public void run() {
  12.             try {
  13.                 Thread.sleep(3000);
  14.                 } catch (InterruptedException e) {
  15.              }
  16.             System.out.println("B");
  17.             }
  18.     }
复制代码


请问结果有可能是BBA吗?(t.start()创建新线程后,主线程突然中断,然后恢复的可能性有吗)
作者: 黑马-胡明    时间: 2014-9-17 18:36
自定义的线程,有可能会出现这样的,最好运行的次数多一些···
作者: liubin    时间: 2014-9-17 18:38
不懂,还没学到那个阶段
作者: 李春丽    时间: 2014-9-17 18:46

  1.     public class Demo/*ThreadTest*/ {

  2.         public static void main(String args[]) {

  3.         MyThread t = new MyThread();

  4.         t.run();//3000后--> B;

  5.         t.start();//3000后执行,A先输出。然后输出B。程序结束。

  6.         System.out.println("A");

  7.         }

  8.     }



  9.     class MyThread extends Thread {

  10.         public void run()
  11.                 {

  12.             try
  13.                         {

  14.                 Thread.sleep(3000);

  15.             }
  16.                         catch (InterruptedException e)
  17.                         {
  18.             }

  19.             System.out.println("B");

  20.        }

  21.     }
复制代码


3秒对计算机而言时间太漫长了,你说的那种情况不太可能发生。
作者: 周靖轩    时间: 2014-9-17 19:19
李春丽 发表于 2014-9-17 18:46
3秒对计算机而言时间太漫长了,你说的那种情况不太可能发生。

就是说还是有可能对吧。比如开启的程序过多,cpu切换不过来。

作者: 子阳zy    时间: 2014-9-17 19:23
上楼说的有道理
作者: fantacyleo    时间: 2014-9-17 20:06
不可能。t.start()要睡3秒,main线程怎么也执行完了
作者: Seven`    时间: 2014-9-17 20:48
子阳zy 发表于 2014-9-17 19:23
上楼说的有道理

小阳说的有道理




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2