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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© て淡莣了陌生 中级黑马   /  2013-5-9 21:45  /  1866 人查看  /  8 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

继承Thread 为什么要用是要加静态, 而实现Runnable就可以不用静态

点评

请楼主把问题阐述清楚,最好可以贴出代码,谢谢  发表于 2013-5-10 21:54

评分

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

查看全部评分

8 个回复

倒序浏览
这个没有要求必须加静态的啊
回复 使用道具 举报
确实没怎么去注意,最好能贴段代码上来看下,我们也当分析、了解
回复 使用道具 举报
//题目:夫妻俩人去银行存钱,每次存一百。只存三次

class Java
{
        public static void main(String [] args)
        {
                bank b=new bank();
                Thread t=new Thread(b);
                Thread t1=new Thread(b);
           t.start();
           t1.start();
        }
}
class bank implements Runnable//因为这是实现的接口,接口本来里面的方法都是静态啊

{   M m=new M();
                public void run(){
                        for(int x=0;x<3;x++){
                       
                        m.add(100);
                        }
                               
       

        }
}
class M
{

        private int num;
        public void add(int money){
       
                synchronized(this){
                num=num+money;
                try
                {
                        Thread .sleep(10);
                }
                catch (Exception e)
                {
                }
                System.out.println (Thread. currentThread().getName()+"=========="+num);

            }
        }
}
回复 使用道具 举报
337091921 发表于 2013-5-9 22:05
//题目:夫妻俩人去银行存钱,每次存一百。只存三次

class Java

不对吧,“class bank implements Runnable//因为这是实现的接口,接口本来里面的方法都是静态啊”;
在Runnable接口中就只有一个run()方法,是我理解错了还是,实现的Runnable接口中怎么可能会有静态的方法。
回复 使用道具 举报
你好,因为继承是通过复写父类中的run()方法,然后通过调用父类的start()方法来达到多个线程的目的的。但是在执行的时候是不是要创建多个对象呢?这样,每个对象在执行的时候都有属于他们自己的属性和行为。比如买100张票。你4个线程通过继承的方式执行的话就会出现400张票。因为每个对象都有100张。4个线程就是400张。为了达到4个线程一共买100张就只能把票数定义成静态的让4个线程共享了。而实现接口不一样。实现接口是通过复写run方法。然后把接口的子类对象传给Thread()对象的方式来实现多线程的。这是资源类。。也就是票就自始之终只出现一次。因为就只创建了一个对象。所以就不用定义静态。讲资源类传给thread()后,调用start();方法就可以执行了。。也不知道你能不能看懂。不懂的话你告诉我你哪里迷糊。我给你解释
回复 使用道具 举报
黄玉昆 黑马帝 2013-5-11 23:01:50
7#
如果问题未解决,请继续追问,如果问题解决了,请将分类改为“已解决”,谢谢
回复 使用道具 举报
仲伟 中级黑马 2013-5-12 10:05:08
8#
如果采用继承Thread类的方法,就只好使用static静态成员了。如果共享的数据比较多,就需要大量的static静态成员,令程序数据结构混乱,难以扩展。这种情况应该尽量避免
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马