黑马程序员技术交流社区
标题:
多线程
[打印本页]
作者:
て淡莣了陌生
时间:
2013-5-9 21:45
标题:
多线程
继承Thread 为什么要用是要加静态, 而实现Runnable就可以不用静态
作者:
白磊
时间:
2013-5-9 21:57
这个没有要求必须加静态的啊
作者:
zms2100
时间:
2013-5-9 21:58
确实没怎么去注意,最好能贴段代码上来看下,我们也当分析、了解
作者:
337091921
时间:
2013-5-9 22:05
//题目:夫妻俩人去银行存钱,每次存一百。只存三次
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);
}
}
}
作者:
zms2100
时间:
2013-5-9 22:12
337091921 发表于 2013-5-9 22:05
//题目:夫妻俩人去银行存钱,每次存一百。只存三次
class Java
不对吧,“class bank implements Runnable//因为这是实现的接口,接口本来里面的方法都是静态啊”;
在Runnable接口中就只有一个run()方法,是我理解错了还是,实现的Runnable接口中怎么可能会有静态的方法。
作者:
黑马-雷钊
时间:
2013-5-10 20:22
你好,因为继承是通过复写父类中的run()方法,然后通过调用父类的start()方法来达到多个线程的目的的。但是在执行的时候是不是要创建多个对象呢?这样,每个对象在执行的时候都有属于他们自己的属性和行为。比如买100张票。你4个线程通过继承的方式执行的话就会出现400张票。因为每个对象都有100张。4个线程就是400张。为了达到4个线程一共买100张就只能把票数定义成静态的让4个线程共享了。而实现接口不一样。实现接口是通过复写run方法。然后把接口的子类对象传给Thread()对象的方式来实现多线程的。这是资源类。。也就是票就自始之终只出现一次。因为就只创建了一个对象。所以就不用定义静态。讲资源类传给thread()后,调用start();方法就可以执行了。。也不知道你能不能看懂。不懂的话你告诉我你哪里迷糊。我给你解释
作者:
黄玉昆
时间:
2013-5-11 23:01
如果问题未解决,请继续追问,如果问题解决了,请将分类改为“已解决”,谢谢
作者:
仲伟
时间:
2013-5-12 10:05
如果采用继承Thread类的方法,就只好使用static静态成员了。如果共享的数据比较多,就需要大量的static静态成员,令程序数据结构混乱,难以扩展。这种情况应该尽量避免
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2