黑马程序员技术交流社区
标题:
多线程对象内存分配——实现Runnable接口,接口子类对象中...
[打印本页]
作者:
赵许星
时间:
2013-10-28 16:05
标题:
多线程对象内存分配——实现Runnable接口,接口子类对象中...
本帖最后由 赵许星 于 2013-10-31 14:21 编辑
看了毕老师java视频,变量i,怎么被多线程共享了??搞不明白
class demo implements Runnable
{
private int i=100;
public void run()
{
for(i>0)
i--;
}
}
复制代码
作者:
李文帅
时间:
2013-10-28 19:52
是的,因为在创建线程时,是把同一个接口子类对象作为实参传递给各个线程的构造方法,所以创建的这几个线程是对同一个实例对象进行操作;
当各个线程开启时,都会运行同一个实例对象的run()方法,而run()方法中是对该实例对象的属性i进行操作,所以说该变量i被多个线程共享了。
这是我自己的理解希望对你有所帮助...
作者:
喂,咱不离!
时间:
2013-10-28 22:36
你是不是怎么调用的
作者:
喂,咱不离!
时间:
2013-10-28 22:42
你是不是这么调用的?
demo d = new demo();
new Thread(d).start();
new Thread(d).start();
new Thread(d).start();
说白了就是,多个线程调用同一个对象。
给你举个例子,这个demo好比是你,这个 i 好比你身上的100块钱,那么run()就相当于你去坐公交车,逛超市,逛书店等等消费了,而new Thread()就是调用了一下你身上花钱的这个方法。
那么你想,你人只有一个,这钱是不是在不断的减少,这不是就是在共享着你身上的属性吗???
精辟吧!!!
作者:
黄炳期
时间:
2013-10-28 22:53
典型的例子就是卖火车票系统。
火车票就只有100张,5个窗口同时在卖,每个窗口卖出一张,都是从这100张票中减掉的,卖一张少一张。所以,这100张票要同时被这5个窗口所共享。
作者:
To
时间:
2013-10-29 21:40
楼主你好,如果问题已解决请将帖子状态修改为提问结束,
如果未解决请继续追问,谢谢合作
修改方法请看解释帖:
http://bbs.itheima.com/thread-89313-1-1.html
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2