黑马程序员技术交流社区

标题: Thread问题 [打印本页]

作者: 梁耀今    时间: 2013-3-20 09:52
标题: Thread问题
本帖最后由 梁耀今 于 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的运行代码块的代码呢?
谁来详细解答一下!



作者: 王军行    时间: 2013-3-20 09:57
理解方面的问题,运行代码主函数只是程序入口,运行代码的是虚拟机,虚拟机不关闭代码就可以运行。
没有规定你从哪进,最后只能回到那里。
作者: 张亚青    时间: 2013-3-20 10:18
本帖最后由 张亚青 于 2013-3-20 10:20 编辑

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

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

3、主线程也有可能在子线程结束之前结束。并且子线程不受影响,不会因为主线程的结束而结束。
作者: 赵晓东    时间: 2013-3-20 10:20

作者: 孙晋学    时间: 2013-3-20 10:20
线程啊,main函数是一个独立的线程,Demo继承了Thread,start之后也
独立开启了一个线程。他们共存于一个进程空间
main线程结束后,另一个人线程可以可以继续运行,要说这两个间有什么关系,
就是两个线程都运行的时候会抢夺CPU执行权
作者: 梁耀今    时间: 2013-3-20 10:42
赵晓东 发表于 2013-3-20 10:20

说一下JVM啊?那个不懂啊!
作者: 梁耀今    时间: 2013-3-20 10:42
赵晓东 发表于 2013-3-20 10:20

说一下JVM啊,那个不懂啊
作者: 梁耀今    时间: 2013-3-20 10:42
王军行 发表于 2013-3-20 09:57
理解方面的问题,运行代码主函数只是程序入口,运行代码的是虚拟机,虚拟机不关闭代码就可以运行。
没有规 ...

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

线程与线程之间不会影响么?




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