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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

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是共享的,想问下他们内存分布是怎么下的 求解答,谢谢

2 个回复

倒序浏览
忘记写打印结果
---------- 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 秒) - 正常终止
回复 使用道具 举报
1,内存中对象的方法差异:继承Thread为父类的子类,在内存中建立的每个对象都有run方法和Start方法;而实现Runnable接口的实现类,只要Run方法;
2,启动多线程需要建立的对象个数有差异:如果要建立4个线程,一个需要建立4个对象,一个需要建立5个对象;那么Thread子类只需要建立四个对象,调用start方法即可;而Runnable的实现类,需要建立一个本类对象,并以该对象为参数传递给,同时4个新建的Thread对象,然后是Thread对象调用start启动线程。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马