A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 周靖轩 中级黑马   /  2014-9-17 18:26  /  1936 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  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()创建新线程后,主线程突然中断,然后恢复的可能性有吗)

7 个回复

正序浏览
Seven` 来自手机 中级黑马 2014-9-17 20:48:43
8#
子阳zy 发表于 2014-9-17 19:23
上楼说的有道理

小阳说的有道理
回复 使用道具 举报
不可能。t.start()要睡3秒,main线程怎么也执行完了
回复 使用道具 举报
上楼说的有道理
回复 使用道具 举报
李春丽 发表于 2014-9-17 18:46
3秒对计算机而言时间太漫长了,你说的那种情况不太可能发生。

就是说还是有可能对吧。比如开启的程序过多,cpu切换不过来。
回复 使用道具 举报

  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秒对计算机而言时间太漫长了,你说的那种情况不太可能发生。
回复 使用道具 举报
不懂,还没学到那个阶段
回复 使用道具 举报
自定义的线程,有可能会出现这样的,最好运行的次数多一些···
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马