0
需要您的幫助才能讓我的基礎知識正確。 請考慮下面的片段(從一本書:))多個線程之間的數據共享(班級)
class Flooring extends Thread
{
final int MAX = 100000000;
int number;
volatile double d = 0;
public Flooring(int n, int priority)
{
number = n;
setPriority(priority);
start(); // start the thread
}
public void run()
{
for(int i = 1; i < MAX; i++)
d = d + (Math.PI + Math.E + Math.floor(i))/(double)i;
System.out.println(「Inside Thread」 + number + 「 : 」 + d);
}
}
public class FloorThread
{
public static void main(String[] args)
{
for(int i = 1; i < 11; i++)
new Flooring(i, 11-i); // priority decreases
}
}
這裏變量d被標記爲揮發性。這意味着我們希望確保線程間的可見性,因此它是一個共享變量。 我已經看到了一些其他的例子,我們在Thread類中有一個變量,但不希望共享? 不應該每個新的Flooring對象都應該有它自己的double d變量嗎?
請大家幫忙,因爲我對類似的其他例子沒有把變量標記爲volatile類型。
在此先感謝。
「我們在Thread類中有一個變量,但不能確定嗎?」 :沒有得到這部分,你能糾正/澄清嗎? – 2014-10-01 04:25:52
嗯,從構造函數開始線程對我來說似乎相當狡猾。 – 2014-10-01 04:29:23
嗨瓦倫丁,這是一個錯字。這是共享(不知道)。 – Ouney 2014-10-01 04:34:32