synchronizedrgb
是表示顏色的類,每乙個物件代表一種顏色,使用三個整形數表示顏色的三基色,字串表示顏色名稱。
01
public
class
synchronizedrgb
17
}
18
19
public
synchronizedrgb(
int
red,
20
int
green,
21
int
blue,
22
string name)
29
30
public
void
set(
int
red,
31
int
green,
32
int
blue,
33
string name)
41
}
42
43
public
synchronized
int
getrgb()
46
47
public
synchronized
string getname()
50
51
public
synchronized
void
invert()
57
}
使用synchronizedrgb時需要小心,避免其處於不一致的狀態。例如乙個執行緒執行了以下**:
1
synchronizedrgb color =
2
new
synchronizedrgb(
0
,
0
,
0
,
"pitch black"
);
3
...
4
int
mycolorint = color.getrgb();
//statement 1
5
string mycolorname = color.getname();
//statement 2
如果有另外乙個執行緒在statement 1之後、statement 2之前呼叫了color.set方法,那麼mycolorint的值和mycolorname的值就會不匹配。為了避免出現這樣的結果,必須要像下面這樣把這兩條語句繫結到一塊執行:
1
synchronized
(color)
這種不一致的問題只可能發生在可變物件上。
Oracle官方併發教程之乙個同步類的例子
synchronizedrgb是表示顏色的類,每乙個物件代表一種顏色,使用三個整形數表示顏色的三基色,字串表示顏色名稱。01publicclasssynchronizedrgb 17 18 19publicsynchronizedrgb intred,20intgreen,21intblue,22s...
Oracle官方併發教程之活躍度
乙個併發應用程式能及時執行的能力稱為活躍性。本節將介紹最常見的活躍性問題 死鎖 deadlock 以及另外兩個活躍性問題 飢餓 starvation 和活鎖 livelock 死鎖描述了這樣一種情景,兩個或多個執行緒永久阻塞,互相等待對方釋放資源。下面是乙個例子。alphone和gaston是朋友,...
Oracle官方教程之Fork Join
ork join框架是executorservice介面的一種具體實現,目的是為了幫助你更好地利用多處理器帶來的好處。它是為那些能夠被遞迴地拆解成子任務的工作型別量身設計的。其目的在於能夠使用所有可用的運算能力來提公升你的應用的效能。類似於executorservice介面的其他實現,fork jo...