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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 梁耀今 中级黑马   /  2013-3-20 09:52  /  1637 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 梁耀今 于 2013-3-20 12:24 编辑

大家看看这代码:
class Demo extends Thread
{
      public void run()
      {  
           for(int x=0; x<60; x++)                        //运行代码块
               System.out.println("Demo..."+x);
       }
}
class ThreadDemo
{
         public static void main(Strng[] args)
        {
               Demo d = new Demo();     //创建一个对象
                d.start();               //开始运行Demo的代码

                for(int x=0; x<60; x++)
                 {
                       System.out.println("ThreadDemo....."+x)
                 }
        }
}

毕老师说运行到这主函数就挂了,我觉得这样不正确把?
如果主函数挂了,又如何继续执行Demo的运行代码块的代码呢?
谁来详细解答一下!


评分

参与人数 1技术分 +1 收起 理由
洪建超 + 1

查看全部评分

8 个回复

倒序浏览
理解方面的问题,运行代码主函数只是程序入口,运行代码的是虚拟机,虚拟机不关闭代码就可以运行。
没有规定你从哪进,最后只能回到那里。
回复 使用道具 举报
本帖最后由 张亚青 于 2013-3-20 10:20 编辑

1、main方法也是一个线程。在java中所有的线程都是同时启动的,至于什么时候,哪个先执行,完全看谁先得到CPU的资源。

2、在java中,每次程序运行至少启动2个线程。一个是main线程,一个是垃圾收集线程。因为每当使用java命令执行一个类的时候,实际上都会启动一个JVM,每一个JVM实际上就是在操作系统中启动了一个进程。

3、主线程也有可能在子线程结束之前结束。并且子线程不受影响,不会因为主线程的结束而结束。

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
线程啊,main函数是一个独立的线程,Demo继承了Thread,start之后也
独立开启了一个线程。他们共存于一个进程空间
main线程结束后,另一个人线程可以可以继续运行,要说这两个间有什么关系,
就是两个线程都运行的时候会抢夺CPU执行权

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
赵晓东 发表于 2013-3-20 10:20

说一下JVM啊?那个不懂啊!
回复 使用道具 举报
赵晓东 发表于 2013-3-20 10:20

说一下JVM啊,那个不懂啊
回复 使用道具 举报
王军行 发表于 2013-3-20 09:57
理解方面的问题,运行代码主函数只是程序入口,运行代码的是虚拟机,虚拟机不关闭代码就可以运行。
没有规 ...

虚拟机是怎样运行的?
回复 使用道具 举报
张亚青 发表于 2013-3-20 10:18
1、main方法也是一个线程。在java中所有的线程都是同时启动的,至于什么时候,哪个先执行,完全看谁先得到C ...

线程与线程之间不会影响么?
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马