2014-04-25 60 views
0

所以我正在深入挖掘对我来说复杂的java。我正在研究多线程,我想知道何时将对象的同一实例发送给两个不同的线程,然后将该对象的实例分配给两个线程中的两个单独的实例变量。 java是否将这看作是原始对象的同一个实例?这仅适用于线程吗?Java中的多线程,引用对象

例如:在我的司机

SharedCell share = new SharedCell(); 
Producer p = new Producer(accessCount, share); 
Consumer c = new Consumer(accessCount, share); 

,并在线程:

public Producer(int accesses, SharedCell cell) { 
    super("Producer"); 
    this.accesses = accesses; 
    this.cell = cell; 
} 

public Consumer(int accesses, SharedCell cell) { 
    super("Consumer"); 
    this.accesses = accesses; 
    this.cell = cell; 
} 

其中Producer中运行方法改变在一个变量的值SharedCell对象 和Consumer中的run方法访问该变量。这些应该是关闭的。

那么Consumer和Producer中的单元格是否引用驱动程序发送它们的相同对象?

回答

1

对象是java中的引用类型,与大多数语言一样,这意味着在您的示例中,yes和consumer都指向内存中的同一对象。不,它不仅仅是线程。即使在单线程中,它们也会引用同一个对象。