黑马程序员技术交流社区

标题: 关于多线程创建两种方式,继承和实现内存是怎么分布的, [打印本页]

作者: 李创    时间: 2012-3-16 10:02
标题: 关于多线程创建两种方式,继承和实现内存是怎么分布的,
class Testextends extends Thread
{
        private int x=10;
        public void run()
        {
                while(x>0)
                {
                        System.out.println(Thread.currentThread().getName()+" extends: "+x--);
                }
        }

}
class Testimplemets implements Runnable
{
        private int y=10;
        public void run()
        {
                while(y>0)
                {
                        System.out.println(Thread.currentThread().getName()+" implements : "+y--);
                }
        }

}

class test
{
        public static void main(String[] argv)
        {
                Testextends e1 = new Testextends();
                Testextends e2 = new Testextends();
                e1.start();
                e2.start();
                Testimplemets i = new Testimplemets();
                Thread t1 = new Thread(i);
                Thread t2 = new Thread(i);
                t1.start();
                t2.start();

        }

}
继承方式里面的成员变量x不是共享的,实现方式里面的成员变量y是共享的,想问下他们内存分布是怎么下的 求解答,谢谢
作者: 李创    时间: 2012-3-16 10:04
忘记写打印结果
---------- java ----------
Thread-0 extends: 10
Thread-0 extends: 9
Thread-0 extends: 8
Thread-0 extends: 7
Thread-0 extends: 6
Thread-0 extends: 5
Thread-0 extends: 4
Thread-0 extends: 3
Thread-0 extends: 2
Thread-0 extends: 1
Thread-1 extends: 10
Thread-1 extends: 9
Thread-1 extends: 8
Thread-1 extends: 7
Thread-1 extends: 6
Thread-1 extends: 5
Thread-1 extends: 4
Thread-1 extends: 3
Thread-1 extends: 2
Thread-1 extends: 1
Thread-3 implements : 9
Thread-3 implements : 8
Thread-3 implements : 7
Thread-3 implements : 6
Thread-3 implements : 5
Thread-3 implements : 4
Thread-3 implements : 3
Thread-3 implements : 2
Thread-3 implements : 1
Thread-2 implements : 10

输出完成 (耗时 0 秒) - 正常终止
作者: OMG    时间: 2012-3-16 11:15
1,内存中对象的方法差异:继承Thread为父类的子类,在内存中建立的每个对象都有run方法和Start方法;而实现Runnable接口的实现类,只要Run方法;
2,启动多线程需要建立的对象个数有差异:如果要建立4个线程,一个需要建立4个对象,一个需要建立5个对象;那么Thread子类只需要建立四个对象,调用start方法即可;而Runnable的实现类,需要建立一个本类对象,并以该对象为参数传递给,同时4个新建的Thread对象,然后是Thread对象调用start启动线程。




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