public class Object
Objectã¯ã©ã¹ã¯ãã¯ã©ã¹éå±€ã®ã«ãŒãã§ãã ãã¹ãŠã®ã¯ã©ã¹ã¯ãã¹ãŒããŒã»ã¯ã©ã¹ãšããŠObjectãæã¡ãŸãã é
åãå«ããã¹ãŠã®ãªããžã§ã¯ãã¯ããã®ã¯ã©ã¹ã®ã¡ãœãããå®è£
ããŸãã Class| ã³ã³ã¹ãã©ã¯ã¿ | 説æ |
|---|---|
Object() |
| 修食åãšå | ã¡ãœãã | 説æ |
|---|---|---|
protected Object |
clone() |
ãã®ãªããžã§ã¯ãã®ã³ããŒãäœæããŠãè¿ããŸãã
|
boolean |
equals(Object obj) |
ãã®ãªããžã§ã¯ããšä»ã®ãªããžã§ã¯ããçãããã©ããã瀺ããŸãã
|
protected void |
finalize() |
ãã®ãªããžã§ã¯ããžã®åç
§ã¯ãããªããšã¬ããŒãžã»ã³ã¬ã¯ã·ã§ã³ã«ãã£ãŠå€æããããšãã«ãã¬ããŒãžã»ã³ã¬ã¯ã¿ã«ãã£ãŠåŒã³åºãããŸãã
|
Class<?> |
getClass() |
ãã®
Objectã®å®è¡æã¯ã©ã¹ãè¿ããŸãã |
int |
hashCode() |
ãªããžã§ã¯ãã®ããã·ã¥ã»ã³ãŒãå€ãè¿ããŸãã
|
void |
notify() |
ãã®ãªããžã§ã¯ãã®ã¢ãã¿ãŒã§åŸ
æ©äžã®ã¹ã¬ããã1ã€åéããŸãã
|
void |
notifyAll() |
ãã®ãªããžã§ã¯ãã®ã¢ãã¿ãŒã§åŸ
æ©äžã®ãã¹ãŠã®ã¹ã¬ãããåéããŸãã
|
String |
toString() |
ãªããžã§ã¯ãã®æåå衚çŸãè¿ããŸãã
|
void |
wait() |
å¥ã®ã¹ã¬ããããã®ãªããžã§ã¯ãã®
notify()ã¡ãœãããŸãã¯notifyAll()ã¡ãœãããåŒã³åºããŸã§ãçŸåšã®ã¹ã¬ãããåŸ
æ©ãããŸãã |
void |
wait(long timeout) |
å¥ã®ã¹ã¬ããããã®ãªããžã§ã¯ãã®
notify()ã¡ãœãããŸãã¯notifyAll()ã¡ãœãããåŒã³åºãããæå®ãããæéãçµéãããŸã§ãçŸåšã®ã¹ã¬ãããåŸ
æ©ãããŸãã |
void |
wait(long timeout, int nanos) |
å¥ã®ã¹ã¬ããããã®ãªããžã§ã¯ãã®
notify()ã¡ãœãããŸãã¯notifyAll()ã¡ãœãããåŒã³åºãããã»ãã®ã¹ã¬ãããçŸåšã®ã¹ã¬ããã«å²èŸŒã¿ããããããæå®ãããéã®å®æéãçµéãããŸã§ãçŸåšã®ã¹ã¬ãããåŸ
æ©ãããŸãã |
public final Class<?> getClass()
Objectã®å®è¡æã¯ã©ã¹ãè¿ããŸãã è¿ãããClassãªããžã§ã¯ãã¯ã衚ãããã¯ã©ã¹ã®static synchronizedã¡ãœããã«ãã£ãŠããã¯ããããªããžã§ã¯ãã§ãã
å®éã®çµæåã¯Class<? extends |X|>ã§ããããã§ã|X|ã¯getClassãåŒã³åºãããåŒã®staticåã®æ¶å»ã§ãã ããšãã°ããã®ã³ãŒãã®æç²ã§ã¯ãã£ã¹ãã¯å¿
èŠãããŸããã
Number n = 0;
Class<? extends Number> c = n.getClass();
Classãªããžã§ã¯ããpublic int hashCode()
HashMapã«ãã£ãŠæäŸãããããã·ã¥è¡šãªã©ã®ãããã·ã¥è¡šã®å©ç¹ã®ããã«ãµããŒããããŠããŸãã
hashCodeã®äžè¬çãªèŠåã¯æ¬¡ã®ãšããã§ãã
equalsã®æ¯èŒã§äœ¿çšãããæ
å ±ã倿ŽãããŠããªããã°ãhashCodeã¡ãœããã¯åžžã«åãæŽæ°ãè¿ãå¿
èŠããããŸãã ãã ãããã®æŽæ°ã¯åãã¢ããªã±ãŒã·ã§ã³ã®å®è¡ããšã«åãã§ããå¿
èŠã¯ãããŸããã
equals(Object)ã¡ãœããã«åŸã£ãŠ2ã€ã®ãªããžã§ã¯ããçããå Žåã¯ã2ã€ã®åãªããžã§ã¯ãã«å¯ŸããhashCodeã¡ãœããã®åŒåºãã«ãã£ãŠåãæŽæ°ã®çµæãçæãããå¿
èŠããããŸãã
equals(java.lang.Object)ã¡ãœããã«åŸã£ãŠ2ã€ã®ãªããžã§ã¯ããçãããªãå Žåã¯ã2ã€ã®åãªããžã§ã¯ãã«å¯ŸããhashCodeã¡ãœããã®åŒåºãã«ãã£ãŠç°ãªãæŽæ°ã®çµæãçæãããå¿
èŠã¯ãããŸããã ãã ããããã°ã©ãã¯ãçãããªããªããžã§ã¯ãã«å¯ŸããŠç°ãªãæŽæ°ã®çµæãçæãããšãããã·ã¥è¡šã®ããã©ãŒãã³ã¹ãåäžããå Žåãããããšã«æ°ä»ãã¯ãã§ãã
ã¯ã©ã¹Objectã«ãã£ãŠå®çŸ©ãããhashCodeã¡ãœããã¯ãå¯èœãªããããç°ãªããªããžã§ã¯ãã«å¯ŸããŠç°ãªãæŽæ°ãè¿ããŸãã (ããã¯éåžžããªããžã§ã¯ãã®å
éšã¢ãã¬ã¹ãæŽæ°ã«å€æããããšã«ãã£ãŠå®è£
ãããŸããããã®å®è£
ãã¯ããã¯ã¯Javaâ¢ããã°ã©ãã³ã°èšèªã§ã¯å¿
èŠãããŸããã)
equals(java.lang.Object), System.identityHashCode(java.lang.Object)public boolean equals(Object obj)
equalsã¡ãœããã¯ãnull以å€ã®ãªããžã§ã¯ãåç
§ã§ã®åå€é¢ä¿ãå®è£
ããŸãã
xã«ã€ããŠãx.equals(x)ã¯trueãè¿ããŸãã
xããã³yã«ã€ããŠãy.equals(x)ãtrueãè¿ãå Žåã«éããx.equals(y)ã¯trueãè¿ããŸãã
xãyãããã³zã«ã€ããŠãx.equals(y)ãtrueãè¿ããy.equals(z)ãtrueãè¿ãå Žåãx.equals(z)ã¯trueãè¿ããŸãã
xããã³yã«ã€ããŠãx.equals(y)ã®è€æ°ã®åŒåºãã¯ããã®ãªããžã§ã¯ãã«å¯Ÿããequalsã«ããæ¯èŒã§äœ¿ãããæ
å ±ã倿ŽãããŠããªããã°ãäžè²«ããŠtrueãè¿ãããäžè²«ããŠfalseãè¿ããŸãã
xã«ã€ããŠãx.equals(null)ã¯falseãè¿ããŸãã
Objectã¯ã©ã¹ã®equalsã¡ãœããã¯ããã£ãšãæ¯èŒãããããªããžã§ã¯ãã®åå€é¢ä¿ãå®è£
ããŸããã€ãŸããnull以å€ã®åç
§å€xãšyã«ã€ããŠããã®ã¡ãœããã¯xãšyãåããªããžã§ã¯ããåç
§ãã(x == yãtrue)å Žåã«ã ãtrueãè¿ããŸãã
éåžžããã®ã¡ãœããããªãŒããŒã©ã€ãããå Žåã¯ãhashCodeã¡ãœãããåžžã«ãªãŒããŒã©ã€ãããŠããç䟡ãªãªããžã§ã¯ãã¯ç䟡ãªããã·ã¥ã»ã³ãŒããä¿æããå¿
èŠãããããšããhashCodeã¡ãœããã®æ±çšèŠçŽã«åŸãå¿
èŠãããããšã«çæããŠãã ããã
obj - æ¯èŒå¯Ÿè±¡ã®åç
§ãªããžã§ã¯ããtrueããã以å€ã®å Žåã¯falseãhashCode()ãHashMapprotected Object clone() throws CloneNotSupportedException
xã«ã€ããŠã次ã®åŒ
ãtrueã§ãããæ¬¡ã®åŒx.clone() != x
ãx.clone().getClass() == x.getClass()
trueã«ãªãããšã§ããããããã¯çµ¶å¯ŸçãªèŠä»¶ã§ã¯ãããŸããã ãŸã次ã®åŒ
ãx.clone().equals(x)
trueã«ãªããŸãããããã¯çµ¶å¯ŸçãªèŠä»¶ã§ã¯ãããŸããã
æ
£äŸäžãè¿ããããªããžã§ã¯ãã¯ãsuper.cloneãåŒã³åºãããšã«ãã£ãŠååŸããããã«ããŠãã ããã ã¯ã©ã¹ãšãã®ãã¹ãŠã®ã¹ãŒããŒã»ã¯ã©ã¹(Objectãé€ã)ããã®èŠåã«åŸã£ãŠããå Žåã¯ãx.clone().getClass()== x.getClass()ãæç«ããŸãã
éåžžããã®ã¡ãœããã«ããè¿ããããªããžã§ã¯ãã¯ããã®ãªããžã§ã¯ã(è€è£œãããŠãã)ããç¬ç«ããŠããå¿
èŠããããŸãã ãã®ç¬ç«æ§ãå®çŸããã«ã¯ãsuper.cloneã«ãã£ãŠè¿ããããªããžã§ã¯ããè¿ãåã«ããã®1ã€ä»¥äžã®ãã£ãŒã«ãã倿Žããããšãå¿
èŠã«ãªãå ŽåããããŸãã ããã¯ãéåžžãè€è£œãããªããžã§ã¯ãã®å
éšã深局æ§é ããæ§æããå¯å€ãªããžã§ã¯ãã®ã³ããŒãããã³ãããã®ãªããžã§ã¯ããžã®åç
§ãã³ããŒãžã®åç
§ã«çœ®ãæããããšãæå³ããŸãã ã¯ã©ã¹ã«ããªããã£ãã»ãã£ãŒã«ããŸãã¯äžå€ãªããžã§ã¯ããžã®åç
§ããå«ãŸããŠããªãå Žåã¯ãéåžžãsuper.cloneã«ãã£ãŠè¿ããããªããžã§ã¯ãå
ã®ãã£ãŒã«ãã倿Žããå¿
èŠããããŸããã
ã¯ã©ã¹Objectã®ã¡ãœããcloneã¯ãç¹å®ã®ã¯ããŒãã³ã°æäœãå®è¡ããŸãã ãŸãããã®ãªããžã§ã¯ãã®ã¯ã©ã¹ãã€ã³ã¿ãã§ãŒã¹Cloneableãå®è£
ããŠããªãå Žåã¯ãCloneNotSupportedExceptionãã¹ããŒãããŸãã ãã¹ãŠã®é
åãã€ã³ã¿ãã§ãŒã¹Cloneableãå®è£
ããŠãããšèŠãªãããããšãããã³é
ååT[]ã®cloneã¡ãœããã®æ»ãå€ã®åã¯T[] (ããã§ãTã¯ä»»æã®åç
§ãŸãã¯ããªããã£ãå)ã§ãã å®è£
ããŠããªãå Žåããã®ã¡ãœããã¯ãã®ãªããžã§ã¯ãã®ã¯ã©ã¹ã®æ°ããã€ã³ã¹ã¿ã³ã¹ãçæãããã®ãã£ãŒã«ãããã¹ãŠããã®ãªããžã§ã¯ãã®å¯Ÿå¿ããåãã£ãŒã«ãã®å
容ã§åæåããŸããããã¯ä»£å
¥ãšåæ§ã§ããã£ãŒã«ãã®å
容èªèº«ãè€è£œãããã®ã§ã¯ãããŸããã ã€ãŸããã®ã¡ãœããã¯ããªããžã§ã¯ãã®ãã·ã£ããŒã»ã³ããŒããçæããŸãããããã£ãŒãã»ã³ããŒãã¯çæããŸããã
ã¯ã©ã¹Objectèªäœã¯ã€ã³ã¿ãã§ãŒã¹Cloneableãå®è£
ããŠããªããããã¯ã©ã¹ãObjectã§ãããªããžã§ã¯ãã«å¯ŸããŠcloneã¡ãœãããåŒã³åºããšãå®è¡æã«äŸå€ãã¹ããŒãããŸãã
CloneNotSupportedException - ãªããžã§ã¯ãã®ã¯ã©ã¹ãCloneableã€ã³ã¿ãã§ãŒã¹ããµããŒãããŠããªãå Žåã cloneã¡ãœããããªãŒããŒã©ã€ããããµãã¯ã©ã¹ããã€ã³ã¹ã¿ã³ã¹ãè€è£œã§ããªãããšã瀺ãããã«ãã®äŸå€ãã¹ããŒããããšãããã Cloneablepublic String toString()
toStringã¡ãœããã¯ããã®ãªããžã§ã¯ãããããã¹ãã§è¡šããæååãè¿ããŸãã ãã®çµæã¯ã人éãèªããç°¡æœã§æçãªæ
å ±ã§ããã¹ãã§ãã ãã¹ãŠã®ãµãã¯ã©ã¹ã§ããã®ã¡ãœããããªãŒããŒã©ã€ãããããšããèŠãããŸãã
ã¯ã©ã¹Objectã®toStringã¡ãœããã¯ããªããžã§ã¯ããã€ã³ã¹ã¿ã³ã¹ã«ãªã£ãŠããå
ã®ã¯ã©ã¹ã®ååãã¢ããããŒã¯æåã@ããããã³ãªããžã§ã¯ãã®ããã·ã¥ã»ã³ãŒãã®ç¬Šå·ãªã16鲿°è¡šçŸããæ§æãããæååãè¿ããŸãã ã€ãŸãããã®ã¡ãœããã¯æ¬¡ã®å€ãšçããæååãè¿ããŸãã
getClass().getName() + '@' + Integer.toHexString(hashCode())
public final void notify()
waitã¡ãœãããåŒã³åºããšããªããžã§ã¯ãã®ã¢ãã¿ãŒã§åŸ
æ©ããŸãã
åéãããã¹ã¬ããã®åŠçã¯ãçŸåšã®ã¹ã¬ããããã®ãªããžã§ã¯ãã®ããã¯ãè§£é€ãããŸã§ã¯é²ãããšãã§ããŸããã åéãããã¹ã¬ããã¯ãã»ãã®ã¹ã¬ãããšåãããã«ããã®ãªããžã§ã¯ããšåæããããã«ç©æ¥µçã«ç«¶ããŸããããšãã°ããã®ãªããžã§ã¯ããããã¯ããæ¬¡ã®ã¹ã¬ããã«ãªãããšããå Žåã§ããåéãããã¹ã¬ããã®æ±ãã¯ã»ãã®ã¹ã¬ããããåªå¢ã§ãå£å¢ã§ããããŸããã
ãã®ã¡ãœãããåŒã³åºãã®ã¯ããã®ãªããžã§ã¯ãã®ã¢ãã¿ãŒãææããã¹ã¬ããã ãã§ãªããã°ãããŸããã ã¹ã¬ããããªããžã§ã¯ãã®ã¢ãã¿ãŒã®ãªãŒããŒã«ãªãæ¹æ³ã¯ã次ã®3éãããããŸãã
synchronizedæã®æ¬äœãå®è¡ããã
Classåã®ãªããžã§ã¯ãã®å Žåã¯ããã®ã¯ã©ã¹ã®synchronized staticã¡ãœãããå®è¡ããã
ãªããžã§ã¯ãã®ã¢ãã¿ãŒãææã§ããã¹ã¬ããã¯1åã«1ã€ã ãã§ãã
IllegalMonitorStateException - çŸåšã®ã¹ã¬ããããã®ãªããžã§ã¯ãã®ã¢ãã¿ãŒãææããŠããªãå ŽåãnotifyAll(), wait()public final void notifyAll()
waitã¡ãœãããåŒã³åºããšããªããžã§ã¯ãã®ã¢ãã¿ãŒã§åŸ
æ©ããŸãã
åéãããã¹ã¬ããã®åŠçã¯ãçŸåšã®ã¹ã¬ããããã®ãªããžã§ã¯ãã®ããã¯ãè§£é€ãããŸã§ã¯é²ãããšãã§ããŸããã åéãããã¹ã¬ããã¯ãã»ãã®ã¹ã¬ãããšåãããã«ããã®ãªããžã§ã¯ããšåæããããã«ç©æ¥µçã«ç«¶ããŸããããšãã°ããã®ãªããžã§ã¯ããããã¯ããæ¬¡ã®ã¹ã¬ããã«ãªãããšããå Žåã§ããåéãããã¹ã¬ããã®æ±ãã¯ã»ãã®ã¹ã¬ããããåªå¢ã§ãå£å¢ã§ããããŸããã
ãã®ã¡ãœãããåŒã³åºãã®ã¯ããã®ãªããžã§ã¯ãã®ã¢ãã¿ãŒãææããã¹ã¬ããã ãã§ãªããã°ãããŸããã ã¹ã¬ããããªããžã§ã¯ãã®ã¢ãã¿ãŒã®ãªãŒããŒã«ãªãæ¹æ³ã«ã€ããŠã¯ãnotifyã¡ãœãããåç
§ããŠãã ããã
IllegalMonitorStateException - çŸåšã®ã¹ã¬ããããã®ãªããžã§ã¯ãã®ã¢ãã¿ãŒãææããŠããªãå Žåãnotify(), wait()public final void wait(long timeout)
throws InterruptedException
notify()ã¡ãœãããŸãã¯notifyAll()ã¡ãœãããåŒã³åºãããæå®ãããæéãçµéãããŸã§ãçŸåšã®ã¹ã¬ãããåŸ
æ©ãããŸãã
çŸåšã®ã¹ã¬ããã¯ããã®ãªããžã§ã¯ãã®ã¢ãã¿ãŒã®ãªãŒããŒã§ãªããã°ãªããŸããã
ãã®ã¡ãœããã¯ãçŸåšã®ã¹ã¬ãã(ããã§ã¯Tãšãã)ããã®ãªããžã§ã¯ãã®åŸ æ©ã»ããã«å ¥ããŠããããã®ãªããžã§ã¯ãã«ã€ããŠã®åæèŠæ±ããã¹ãŠå»æ£ããŸãã ã¹ã¬ããTã¯ãã¹ã¬ããã®ã¹ã±ãžã¥ãŒãªã³ã°ã«ã€ããŠã¯ç¡å¹ãšãããæ¬¡ã®4ã€ã®ã©ãããçºçãããŸã§åŸ æ©ããŸãã
notifyã¡ãœãããåŒã³åºããåéãããã¹ã¬ãããšããŠã¹ã¬ããTãéžã°ããã
notifyAllã¡ãœãããåŒã³åºããã
timeoutããŒãã®å Žåã宿éãèæ
®ãããããšã¯ãªããã¹ã¬ããã¯éç¥ãåãããŸã§åŸ
æ©ãç¶ããã
waitã¡ãœãããåŒã³åºããããšãã®ç¶æ
ã«åŸ©å
ãããŸãã æ¬¡ã«ã¹ã¬ããTã¯waitã¡ãœããã®åŒã³åºããã埩垰ããŸãã ããããŠãwaitã¡ãœãããã埩垰ããæç¹ã§ããªããžã§ã¯ãããã³ã¹ã¬ããTã®åæã¹ããŒã¿ã¹ã¯ãwaitã¡ãœãããåŒã³åºããããšããšãŸã£ããåãã«ãªããŸãã
ã¹ã¬ããã¯ãéç¥ãå²ã蟌ã¿ãã¿ã€ã ã»ã¢ãŠããªãã«åéãããããšããããŸããããã¯ãã¹ããªã¢ã¹ã»ãŠã§ã€ã¯ã¢ãããšåŒã°ããŠããŸãã ã¹ããªã¢ã¹ã»ãŠã§ã€ã¯ã¢ããã¯ãå®éã«ã¯ãŸãã«ããçºçããŸããããã¢ããªã±ãŒã·ã§ã³ã§ã¯ãã¹ã¬ãããåéãããããšã§çºçããå¯èœæ§ãããæ¡ä»¶ããã¹ãããæ¡ä»¶ãæºããããªãå Žåã¯åŸ æ©ãç¶ããŠãã¹ããªã¢ã¹ã»ãŠã§ã€ã¯ã¢ããããä¿è·ããªããã°ãããŸããã ã€ãŸããæ¬¡ã®ããã«ã«ãŒãã§åžžã«åŸ æ©ãçºçããããã«ããå¿ èŠããããŸãã
synchronized (obj) {
while (<condition does not hold>)
obj.wait(timeout);
... // Perform action appropriate to condition
}
(ãã®ãããã¯ã®è©³çްã¯ãDoug LeaèãConcurrent Programming in Java (Second Edition)ã(Addison-Wesley, 2000)ã®ã»ã¯ã·ã§ã³3.2.3ãJoshua BlochèãEffective Java Programming Language Guideã(Addison-Wesley, 2001)ã®ã¢ã€ãã 50ãåç
§ããŠãã ãã)ã
çŸåšã®ã¹ã¬ããã®åŸ
æ©äžãŸãã¯åŸ
æ©åã«ä»»æã®ã¹ã¬ããããå²ã蟌ã¿ãããã£ãå ŽåãInterruptedExceptionãã¹ããŒãããŸãã ãã®äŸå€ã¯ããã®ãªããžã§ã¯ãã®ããã¯ã»ã¹ããŒã¿ã¹ãåè¿°ã®ããã«åŸ©å
ããããŸã§ã¯ã¹ããŒãããŸããã
çŸåšã®ã¹ã¬ããããã®ãªããžã§ã¯ãã®åŸ
æ©ã»ããã«å
¥ãããšãã«ãwaitã¡ãœããã¯ãã®ãªããžã§ã¯ãã®ããã¯ã ããè§£é€ããŸããçŸåšã®ã¹ã¬ãããåæããšãå¯èœæ§ã®ãããã®ä»ã®ãªããžã§ã¯ãã¯ããã®ã¹ã¬ãããåŸ
æ©ããŠããéãããã¯ããããŸãŸã§ãã
ãã®ã¡ãœãããåŒã³åºãã®ã¯ããã®ãªããžã§ã¯ãã®ã¢ãã¿ãŒãææããã¹ã¬ããã ãã§ãªããã°ãããŸããã ã¹ã¬ããããªããžã§ã¯ãã®ã¢ãã¿ãŒã®ãªãŒããŒã«ãªãæ¹æ³ã«ã€ããŠã¯ãnotifyã¡ãœãããåç
§ããŠãã ããã
timeout - ããªç§åäœã®æå€§åŸ
æ©æéãIllegalArgumentException - timeoutã®å€ãè² ã§ããå ŽåãIllegalMonitorStateException - çŸåšã®ã¹ã¬ããããªããžã§ã¯ãã®ã¢ãã¿ãŒãææããŠããªãå ŽåãInterruptedException - çŸåšã®ã¹ã¬ãããéç¥ãåŸ
æ©ããåãŸãã¯åŸ
æ©äžã«ãããããã®ã¹ã¬ãããçŸåšã®ã¹ã¬ããã«å²ã蟌ãã å Žåã ãã®äŸå€ãã¹ããŒããããšãçŸåšã®ã¹ã¬ããã®å²èŸŒã¿ã¹ããŒã¿ã¹ã¯ã¯ãªã¢ãããã notify(), notifyAll()public final void wait(long timeout,
int nanos)
throws InterruptedException
notify()ã¡ãœãããŸãã¯notifyAll()ã¡ãœãããåŒã³åºãããã»ãã®ã¹ã¬ãããçŸåšã®ã¹ã¬ããã«å²èŸŒã¿ããããããæå®ãããéã®å®æéãçµéãããŸã§ãçŸåšã®ã¹ã¬ãããåŸ
æ©ãããŸãã
ãã®ã¡ãœããã¯ãåŒæ°ã1ã€ã®waitã¡ãœããã«äŒŒãŠããŸãããã¿ã€ã ã»ã¢ãŠããŸã§ã®åŸ
ã¡æéã®éããã现ããå¶åŸ¡ã§ããŸãã ããç§åäœã®å®æéã¯ã次ã®åŒã§æå®ããŸãã
1000000*timeout+nanos
ãã®ä»ã®é¢ã§ã¯ããã®ã¡ãœããã®åäœã¯åŒæ°ã1ã€ã®wait(long)ã¡ãœãããšåãã§ãã ç¹ã«ãwait(0, 0)ã¯wait(0)ãšåãæå³ã«ãªããŸãã
çŸåšã®ã¹ã¬ããã¯ããã®ãªããžã§ã¯ãã®ã¢ãã¿ãŒã®ãªãŒããŒã§ãªããã°ãªããŸããã ã¹ã¬ããã¯ãã®ã¢ãã¿ãŒã®æææš©ãè§£æŸããæ¬¡ã®ã©ããã®ç¶æ ãçºçãããŸã§åŸ æ©ããŸãã
notifyã¡ãœãããŸãã¯notifyAllã¡ãœãããåŒã³åºãããšã«ãã£ãŠããã®ãªããžã§ã¯ãã®ã¢ãã¿ãŒã§åŸ
æ©äžã®ã¹ã¬ããã«éç¥ãåºãããã®ã¹ã¬ãããåéããã
timeoutåŒæ°ã«æå®ããã¿ã€ã ã»ã¢ãŠãæé(ããªç§åäœ)ãšãnanosåŒæ°ã«æå®ããã¿ã€ã ã»ã¢ãŠãæé(ããç§åäœ)ãè¶³ããæéãçµéããã
ãã®ããšãã¹ã¬ããã¯ã¢ãã¿ãŒã®æææš©ãå床ååŸãããŸã§åŸ æ©ããŠããå®è¡ãåéããŸãã
åŒæ°ã1ã€ã®ããŒãžã§ã³ã§ã¯ãå²ã蟌ã¿ãã¹ããªã¢ã¹ã»ãŠã§ã€ã¯ã¢ãããçºçããå¯èœæ§ãããã®ã§ããã®ã¡ãœããã¯åžžã«ã«ãŒãã§äœ¿çšãããå¿ èŠããããŸãã
synchronized (obj) {
while (<condition does not hold>)
obj.wait(timeout, nanos);
... // Perform action appropriate to condition
}
ãã®ã¡ãœãããåŒã³åºãã®ã¯ããã®ãªããžã§ã¯ãã®ã¢ãã¿ãŒãææããã¹ã¬ããã ãã§ãªããã°ãããŸããã ã¹ã¬ããããªããžã§ã¯ãã®ã¢ãã¿ãŒã®ãªãŒããŒã«ãªãæ¹æ³ã«ã€ããŠã¯ãnotifyã¡ãœãããåç
§ããŠãã ããã timeout - ããªç§åäœã®æå€§åŸ
æ©æéãnanos - 远å ã®åŸ
ã¡æé(ããç§åäœã§0ãã999999ã®ç¯å²)ãIllegalArgumentException - åŸ
ã¡æéã®å€ãè² ã®å ŽåããŸãã¯nanosã®å€ã0ãã999999ã®ç¯å²å€ã®å ŽåãIllegalMonitorStateException - çŸåšã®ã¹ã¬ããããã®ãªããžã§ã¯ãã®ã¢ãã¿ãŒãææããŠããªãå ŽåãInterruptedException - çŸåšã®ã¹ã¬ãããéç¥ãåŸ
æ©ããåãŸãã¯åŸ
æ©äžã«ãããããã®ã¹ã¬ãããçŸåšã®ã¹ã¬ããã«å²ã蟌ãã å Žåã ãã®äŸå€ãã¹ããŒããããšãçŸåšã®ã¹ã¬ããã®å²èŸŒã¿ã¹ããŒã¿ã¹ã¯ã¯ãªã¢ãããã public final void wait()
throws InterruptedException
notify()ã¡ãœãããŸãã¯notifyAll()ã¡ãœãããåŒã³åºããŸã§ãçŸåšã®ã¹ã¬ãããåŸ
æ©ãããŸãã ã€ãŸãããã®ã¡ãœããã®åäœã¯wait(0)ãåŒã³åºããå Žåãšåãã§ãã
çŸåšã®ã¹ã¬ããã¯ããã®ãªããžã§ã¯ãã®ã¢ãã¿ãŒã®ãªãŒããŒã§ãªããã°ãªããŸããã ã¹ã¬ããã¯ãã®ã¢ãã¿ãŒã®æææš©ãè§£æŸããå¥ã®ã¹ã¬ãããnotifyã¡ãœãããŸãã¯notifyAllã¡ãœãããåŒã³åºããŠãã®ãªããžã§ã¯ãã®ã¢ãã¿ãŒäžã§åŸ
æ©ããã¹ã¬ããã«éç¥ãåºããŸã§åŸ
æ©ããŸãã ãã®ããšãã¹ã¬ããã¯ã¢ãã¿ãŒã®æææš©ãå床ååŸãããŸã§åŸ
æ©ããŠããå®è¡ãåéããŸãã
åŒæ°ã1ã€ã®ããŒãžã§ã³ã§ã¯ãå²ã蟌ã¿ãã¹ããªã¢ã¹ã»ãŠã§ã€ã¯ã¢ãããçºçããå¯èœæ§ãããã®ã§ããã®ã¡ãœããã¯åžžã«ã«ãŒãã§äœ¿çšãããå¿ èŠããããŸãã
synchronized (obj) {
while (<condition does not hold>)
obj.wait();
... // Perform action appropriate to condition
}
ãã®ã¡ãœãããåŒã³åºãã®ã¯ããã®ãªããžã§ã¯ãã®ã¢ãã¿ãŒãææããã¹ã¬ããã ãã§ãªããã°ãããŸããã ã¹ã¬ããããªããžã§ã¯ãã®ã¢ãã¿ãŒã®ãªãŒããŒã«ãªãæ¹æ³ã«ã€ããŠã¯ãnotifyã¡ãœãããåç
§ããŠãã ããã IllegalMonitorStateException - çŸåšã®ã¹ã¬ããããªããžã§ã¯ãã®ã¢ãã¿ãŒãææããŠããªãå ŽåãInterruptedException - çŸåšã®ã¹ã¬ãããéç¥ãåŸ
æ©ããåãŸãã¯åŸ
æ©äžã«ãããããã®ã¹ã¬ãããçŸåšã®ã¹ã¬ããã«å²ã蟌ãã å Žåã ãã®äŸå€ãã¹ããŒããããšãçŸåšã®ã¹ã¬ããã®å²èŸŒã¿ã¹ããŒã¿ã¹ã¯ã¯ãªã¢ãããã notify(), notifyAll()protected void finalize()
throws Throwable
finalizeã¡ãœããããªãŒããŒã©ã€ãããŠãã·ã¹ãã ã»ãªãœãŒã¹ãç Žæ£ãããããã®ä»ã®ã¯ãªãŒã³ã¢ãããè¡ã£ããããããšãã§ããŸãã
finalizeã®äžè¬çãªèŠçŽã§ã¯ããã®åŒåºãã¯ããŸã çåããŠããä»»æã®ã¹ã¬ããããã®ãªããžã§ã¯ãã«ã¢ã¯ã»ã¹ã§ããæ¹æ³ã¯ãããªããšãJavaâ¢ä»®æ³ãã·ã³ã倿ããå Žåã«è¡ãããŸãããã ãããã¡ã€ãã©ã€ãºã®æºåãæžãã ä»ã®ãªããžã§ã¯ããŸãã¯ã¯ã©ã¹ããã¡ã€ãã©ã€ãºããããã®ã¢ã¯ã·ã§ã³ã®çµæãããªã£ãå Žåãé€ããŸãã finalizeã¡ãœããã¯ããã®ãªããžã§ã¯ããå¥ã®ã¹ã¬ããã§ãµããã³å©çšå¯èœã«ããããšãå«ããŠãä»»æã®ã¢ã¯ã·ã§ã³ãè¡ãããšãã§ããŸããããããfinalizeã®éåžžã®çšéã¯ããªããžã§ã¯ããåçäžå¯èœãªåœ¢ã§ç Žæ£ããåã®ã¯ãªãŒã³ã¢ãããå®è¡ããããšã§ãã ããšãã°ãå
¥åºåã®æ¥ç¶ã衚ããªããžã§ã¯ãã®finalizeã¡ãœããã¯ããªããžã§ã¯ããæ°žä¹
çã«ç Žæ£ãããåã«ãæ¥ç¶ãåæããããã®æç€ºçãªå
¥åºååŠçãè¡ããŸãã
Objectã¯ã©ã¹ã®finalizeã¡ãœããã¯ãç¹å¥ãªåŠçãè¡ããŸãããéåžžã¯ãäœãããªãã§åŸ©åž°ããŸãã Objectã®ãµãã¯ã©ã¹ã¯ããã®å®çŸ©ããªãŒããŒã©ã€ãããããšãã§ããŸãã
Javaããã°ã©ãã³ã°èšèªã¯ãä»»æã®ãªããžã§ã¯ãã«ã€ããŠã©ã®ã¹ã¬ãããfinalizeã¡ãœãããåŒã³åºãããä¿èšŒããŸããã ããããfinalizeãåŒã³åºãã¹ã¬ãããããŠãŒã¶ãŒã«å¯èŠãªåæããã¯ãfinalizeåŒåºãã®æç¹ã§ã¯ä¿æããŠããªãããšã«ã€ããŠã¯ä¿èšŒãããŸãã ãã£ãããããªãäŸå€ãfinalizeã¡ãœãããã¹ããŒããå ŽåãäŸå€ã¯ç¡èŠããããªããžã§ã¯ãã®ãã¡ã€ãã©ã€ãºã¯çµäºããŸãã
ãããªããžã§ã¯ãã«ã€ããŠfinalizeã¡ãœãããåŒã³åºãããããšã«æ¬¡ã®åŠçãçºçããã®ã¯ããŸã çåããŠããä»»æã®ã¹ã¬ããããã®ãªããžã§ã¯ãã«ã¢ã¯ã»ã¹ã§ããæ¹æ³ã¯ãªããšãJava Virtual Machineããµããã³å€æãããšãã§ããããã«ã¯ããã¡ã€ãã©ã€ãºã®æºåãã§ããŠããã»ãã®ãªããžã§ã¯ããŸãã¯ã¯ã©ã¹ã«ãã£ãŠçºçããåŠçãå«ãŸãããã®æç¹ã§ãã®ãªããžã§ã¯ãã¯ç Žæ£ãããŸãã
ä»»æã®ãªããžã§ã¯ãã«ã€ããŠJava Virtual Machineãfinalizeã¡ãœãããè€æ°ååŒã³åºãããšã¯ãããŸããã
finalizeã¡ãœããã«ãã£ãŠäŸå€ãã¹ããŒããããšãfinalizeã¡ãœããã®åŠçã¯åæ¢ãããŸããããã§ãªãå Žåã¯ç¡èŠãããŸãã
Throwable - ãã®ã¡ãœããã§çããExceptionWeakReference, PhantomReference ãã°ãŸãã¯æ©èœãéä¿¡
詳现ãªAPIãªãã¡ã¬ã³ã¹ããã³éçºè
ããã¥ã¡ã³ãã«ã€ããŠã¯ãJava SEã®ããã¥ã¡ã³ããåç
§ããŠãã ããã ãã®ããã¥ã¡ã³ãã«ã¯ãæŠå¿µçãªæŠèŠãçšèªã®å®çŸ©ãåé¿æ¹æ³ãæå¹ãªã³ãŒãäŸãªã©ã®ãéçºè
ã察象ã«ãããã詳现ãªèª¬æãå«ãŸããŠããŸãã
Copyright © 1993, 2025, Oracle and/or its affiliates. All rights reserved. Use is subject to license terms. Documentation Redistribution Policyãåç
§ããŠãã ããã