黑马程序员技术交流社区

标题: Java中线程的start方法和run方法的区别 [打印本页]

作者: Always,    时间: 2015-5-20 10:37
标题: Java中线程的start方法和run方法的区别
package org.linuxsogood.misc;
public class TestMutiThread {
        public static void main(String[] args) {
                new Thread(new Runnable() {
                        @Override
                        public void run() {
                                for (int i = 0; i < 20; i++) {
                                        System.out.println(i+"hello.");
                                        try {
                                                Thread.sleep(1000);
                                        } catch (InterruptedException e) {
                                                e.printStackTrace();
                                        }
                                }
                        }
                }).run();
                new Thread(new Runnable() {
                       
                        @Override
                        public void run() {
                                for (int i = 0; i < 20; i++) {
                                        System.out.println(i+"test.");
                                        try {
                                                Thread.sleep(1000);
                                        } catch (InterruptedException e) {
                                                e.printStackTrace();
                                        }
                                }
                        }
                }).run();
                System.out.println("test end");
        }
}

当一个线程启动的时候,它的状态被调为了0,如果不是0的话会抛异常出来.然后把这个线程加入到了线程组.最后尝试调用start0方法,而start0方法是私有的,私有的一般是使用C语言写的.看来要调用系统底层,还是要通过C.Java中的多线程,其实底层是使用C代码来实现的.这也就是为什么调用线程中的start方法可以实现多线程的效果.而如果调用run方法的话,其实调用的就是自己写的那个runnable里,自己实现的那个run方法.






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