public class Thread extends Object implements Runnable
åã¹ã¬ããã«ã¯åªå
é äœãä»ããããŠããŸãã åªå
é äœã®é«ãã¹ã¬ããã¯ãåªå
é äœã®äœãã¹ã¬ãããããåªå
ããŠå®è¡ãããŸãã ããã«ãåã¹ã¬ãããããŒã¢ã³ãšããŠããŒã¯ãããŠããå Žåãããã°ããããŠããªãå ŽåããããŸãã ããã¹ã¬ããã§å®è¡äžã®ã³ãŒããæ°ããThreadãªããžã§ã¯ããäœæãããšããã®æ°ããã¹ã¬ããã«ã¯ããã®æç¹ã§ã¯ãäœæåŽã®ã¹ã¬ããã®åªå
é äœã«çããåªå
é äœãèšå®ãããäœæåŽã¹ã¬ãããããŒã¢ã³ã§ããå Žåã«ã ããããŒã¢ã³ã»ã¹ã¬ããã«ãªããŸãã
éåžžãJavaä»®æ³ãã·ã³ãèµ·åãã(äžè¬çã«ã¯ããæå®ãããã¯ã©ã¹ã®mainãšããååãä»ããããã¡ãœãããåŒã³åºã)ãšãããŒã¢ã³ã»ã¹ã¬ããã§ã¯ãªãã¹ã¬ããã1ã€ååšããŸãã Javaä»®æ³ãã·ã³ã¯ã次ã®ã©ããã®æ¡ä»¶ãçºçãããŸã§ã¹ã¬ãããå®è¡ãç¶ããŸãã
Runtimeã¯ã©ã¹ã®exitã¡ãœãããåŒã³åºãããã»ãã¥ãªãã£ã»ãããŒãžã£ãexitåäœãèš±å¯ããå Žåã
runã¡ãœããã®åŒã³åºããã埩垰ããããšã«ãã£ãŠããŸãã¯runã¡ãœãã以å€ããéãããäŸå€ãã¹ããŒããããšã«ãã£ãŠãããŒã¢ã³ã»ã¹ã¬ããã§ã¯ãªããã¹ãŠã®ã¹ã¬ãããçµäºããå Žåã
æ°ããå®è¡ã®ã¹ã¬ãããäœæããã«ã¯2éãã®æ¹æ³ããããŸãã 1ã€ã®æ¹æ³ã¯ãã¯ã©ã¹ãThreadã®ãµãã¯ã©ã¹ã§ãããšå®£èšããããšã§ãã ãã®ãµãã¯ã©ã¹ã¯ãThreadã¯ã©ã¹ã®runã¡ãœããããªãŒããŒã©ã€ãããªããã°ãããŸããã ããããã°ãµãã¯ã©ã¹ã®ã€ã³ã¹ã¿ã³ã¹ã¯å²ãåœãŠãããèµ·åãããããšãã§ããŸãã ããšãã°ãåæå€ãã倧ããçŽ æ°ãèšç®ããã¹ã¬ããã¯ã次ã«ç€ºãããã«ããŠäœæã§ããŸãã
class PrimeThread extends Thread {
long minPrime;
PrimeThread(long minPrime) {
this.minPrime = minPrime;
}
public void run() {
// compute primes larger than minPrime
. . .
}
}
次ã«ã以äžã«ç€ºãã³ãŒãã§ã¹ã¬ãããäœæããã¹ã¬ããã®å®è¡ãéå§ããŸãã
PrimeThread p = new PrimeThread(143);
p.start();
ã¹ã¬ãããäœæãããã1ã€ã®æ¹æ³ã¯ãRunnableã€ã³ã¿ãã§ãŒã¹ãå®è£
ããã¯ã©ã¹ã宣èšããããšã§ãã ãããããšããã®ã¯ã©ã¹ã¯ãrunã¡ãœãããå®è£
ããŸãã ã¯ã©ã¹ã®ã€ã³ã¹ã¿ã³ã¹ãå²ãåœãŠãããThreadã®äœææã«åŒæ°ãšããŠæž¡ãããéå§ãããŸãã ãã®æ¹æ³ã§ã®åãäŸã¯ã次ã«ç€ºãããã«ãªããŸãã
class PrimeRun implements Runnable {
long minPrime;
PrimeRun(long minPrime) {
this.minPrime = minPrime;
}
public void run() {
// compute primes larger than minPrime
. . .
}
}
次ã«ã以äžã«ç€ºãã³ãŒãã§ã¹ã¬ãããäœæããã¹ã¬ããã®å®è¡ãéå§ããŸãã
PrimeRun p = new PrimeRun(143);
new Thread(p).start();
åã¹ã¬ããã¯èå¥ã®ããã®ååãæã¡ãŸãã è€æ°ã®ã¹ã¬ãããåãååãæã€ããšããããŸãã ã¹ã¬ããã®äœææã«ååãæå®ãããªããšãã¹ã¬ããã«ã¯æ°ããååãçæãããŸãã
ã»ãã§æå®ããªãå ŽåãnullåŒæ°ãã³ã³ã¹ãã©ã¯ã¿ãŸãã¯ãã®ã¯ã©ã¹ã®ã¡ãœãããžæž¡ããšãNullPointerExceptionãã¹ããŒãããŸãã
Runnable, Runtime.exit(int), run(), stop()| 修食åãšå | ã¯ã©ã¹ | 説æ |
|---|---|---|
static class |
Thread.State |
ã¹ã¬ããã®ç¶æ
ã§ãã
|
static interface |
Thread.UncaughtExceptionHandler |
ãã£ãããããªãäŸå€ã«ãããThreadãçªç¶çµäºãããšãã«åŒã³åºãããã®ãã³ãã©ã®ã€ã³ã¿ãã§ãŒã¹ã§ãã
|
| 修食åãšå | ãã£ãŒã«ã | 説æ |
|---|---|---|
static int |
MAX_PRIORITY |
ã¹ã¬ããã«èšå®ã§ããæé«åªå
é äœã§ãã
|
static int |
MIN_PRIORITY |
ã¹ã¬ããã«èšå®ã§ããæäœåªå
é äœã§ãã
|
static int |
NORM_PRIORITY |
ã¹ã¬ããã«å²ãåœãŠãããããã©ã«ãã®åªå
é äœã§ãã
|
| ã³ã³ã¹ãã©ã¯ã¿ | 説æ |
|---|---|
Thread() |
æ°ãã
Threadãªããžã§ã¯ããå²ãåœãŠãŸãã |
Thread(Runnable target) |
æ°ãã
Threadãªããžã§ã¯ããå²ãåœãŠãŸãã |
Thread(Runnable target, String name) |
æ°ãã
Threadãªããžã§ã¯ããå²ãåœãŠãŸãã |
Thread(String name) |
æ°ãã
Threadãªããžã§ã¯ããå²ãåœãŠãŸãã |
Thread(ThreadGroup group, Runnable target) |
æ°ãã
Threadãªããžã§ã¯ããå²ãåœãŠãŸãã |
Thread(ThreadGroup group, Runnable target, String name) |
ãã®å®è¡ãªããžã§ã¯ããšããŠ
targetãååãšããŠæå®ãããnameãæã€ãgroupã«ãã£ãŠåç
§ãããã¹ã¬ããã»ã°ã«ãŒãã«å±ãããããªãæ°ããThreadãªããžã§ã¯ããå²ãåœãŠãŸãã |
Thread(ThreadGroup group, Runnable target, String name, long stackSize) |
æ°ãã
Threadãªããžã§ã¯ããå²ãåœãŠãå®è¡ãªããžã§ã¯ããšããŠtargetãä¿æããæå®ãããnameãååãšããŠä¿æããããã«ããŸãããŸããgroupã«ãã£ãŠåç
§ãããã¹ã¬ããã»ã°ã«ãŒãã«æå±ããæå®ãããã¹ã¿ãã¯ã»ãµã€ãºãä¿æããŸãã |
Thread(ThreadGroup group, String name) |
æ°ãã
Threadãªããžã§ã¯ããå²ãåœãŠãŸãã |
| 修食åãšå | ã¡ãœãã | 説æ |
|---|---|---|
static int |
activeCount() |
çŸåšã®ã¹ã¬ããã®ã¹ã¬ããã»ã°ã«ãŒããšãã®ãµãã°ã«ãŒãã«å«ãŸããã¢ã¯ãã£ãã»ã¹ã¬ããã®æšå®æ°ãè¿ããŸãã
|
void |
checkAccess() |
çŸåšå®è¡äžã®ã¹ã¬ãããããã®ã¹ã¬ããã倿Žããããã®ã¢ã¯ã»ã¹æš©ãæã£ãŠãããã©ãããå€å®ããŸãã
|
protected Object |
clone() |
Threadãæå³ã®ããããã¡ã§è€è£œããããšã¯äžå¯èœãªãããCloneNotSupportedExceptionãã¹ããŒããŸãã
|
int |
countStackFrames() |
éæšå¥šã
ãã®åŒåºãã®å®çŸ©ã¯ãéæšå¥šã®
suspend()ã«äŸåããŸãã ãŸãããã®åŒåºãã®çµæã¯ä¿èšŒãããŸããã |
static Thread |
currentThread() |
çŸåšå®è¡äžã®ã¹ã¬ããã»ãªããžã§ã¯ãã®åç
§ãè¿ããŸãã
|
void |
destroy() |
éæšå¥šã
ãã®ã¡ãœããã¯ããšããšã¯ãªãŒã³ã¢ãããªãã§ãã®ã¹ã¬ãããç Žæ£ããããã«èšèšãããŠããŸããã ä¿æãããã¢ãã¿ãŒã¯ããã¯ãããç¶æ
ãç¶æããŸãã ãã ãããã®ã¡ãœããã¯å®è£
ãããŸããã§ããã å®è£
ãããŠãããã
suspend()ãšã»ãŒåãããã«ãããããã¯ãçºçããŸãã ã¿ãŒã²ããã»ã¹ã¬ãããéèŠãªã·ã¹ãã ã»ãªãœãŒã¹ãä¿è·ããããã¯ãä¿æããç¶æ
ã§ç Žæ£ãããå Žåãã©ã®ã¹ã¬ãããåã³ãã®ãªãœãŒã¹ã«ã¢ã¯ã»ã¹ã§ããŸããã å¥ã®ã¹ã¬ããããã®ãªãœãŒã¹ãããã¯ããããšãããšããããããã¯ãçºçããŸãã éåžžããã®ãããªãããããã¯ã¯ãããã»ã¹ã®ãåçµãã«ããæããã«ãªããŸãã 詳现ã¯ããThread.stopãThread.suspendãããã³Thread.resumeãæšå¥šãããªãçç±ããåç
§ããŠãã ããã |
static void |
dumpStack() |
çŸåšã®ã¹ã¬ããã®ã¹ã¿ãã¯ã»ãã¬ãŒã¹ãæšæºãšã©ãŒã»ã¹ããªãŒã ã«åºåããŸãã
|
static int |
enumerate(Thread[] tarray) |
çŸè¡ã¹ã¬ããã®ã¹ã¬ããã»ã°ã«ãŒãããã³ãã®äžäœã°ã«ãŒãå
ã®ãã¹ãŠã®ã¢ã¯ãã£ããªã¹ã¬ããããæå®ãããé
åã«ã³ããŒããŸãã
|
static Map<Thread,StackTraceElement[]> |
getAllStackTraces() |
ãã¹ãŠã®ã©ã€ãã»ã¹ã¬ããã®ã¹ã¿ãã¯ã»ãã¬ãŒã¹ã»ããããè¿ããŸãã
|
ClassLoader |
getContextClassLoader() |
ãã®Threadã®ã³ã³ããã¹ãClassLoaderãè¿ããŸãã
|
static Thread.UncaughtExceptionHandler |
getDefaultUncaughtExceptionHandler() |
ãã£ãããããªãäŸå€ã«ããã¹ã¬ãããçªç¶çµäºãããšãã«åŒã³åºãããããã©ã«ãã®ãã³ãã©ãè¿ããŸãã
|
long |
getId() |
ãã®ã¹ã¬ããã®èå¥åãè¿ããŸãã
|
String |
getName() |
ãã®ã¹ã¬ããã®ååãè¿ããŸãã
|
int |
getPriority() |
ãã®ã¹ã¬ããã®åªå
é äœãè¿ããŸãã
|
StackTraceElement[] |
getStackTrace() |
ãã®ã¹ã¬ããã®ã¹ã¿ãã¯ã»ãã³ãã衚ãã¹ã¿ãã¯ã»ãã¬ãŒã¹èŠçŽ ã®é
åãè¿ããŸãã
|
Thread.State |
getState() |
ãã®ã¹ã¬ããã®ç¶æ
ãè¿ããŸãã
|
ThreadGroup |
getThreadGroup() |
ãã®ã¹ã¬ãããæå±ããã¹ã¬ããã»ã°ã«ãŒããè¿ããŸãã
|
Thread.UncaughtExceptionHandler |
getUncaughtExceptionHandler() |
ãã£ãããããªãäŸå€ã«ããã¹ã¬ãããçªç¶çµäºãããšãã«åŒã³åºããããã³ãã©ãè¿ããŸãã
|
static boolean |
holdsLock(Object obj) |
çŸè¡ã¹ã¬ãããæå®ããããªããžã§ã¯ãã«å¯Ÿããã¢ãã¿ãŒã»ããã¯ãä¿æããå Žåã«ã®ã¿ãtrueãè¿ããŸãã
|
void |
interrupt() |
ãã®ã¹ã¬ããã«å²ã蟌ã¿ãŸãã
|
static boolean |
interrupted() |
çŸåšã®ã¹ã¬ãããå²ã蟌ãŸããŠãããã©ããã調ã¹ããŸãã
|
boolean |
isAlive() |
ãã®ã¹ã¬ãããçåããŠãããã©ãããå€å®ããŸãã
|
boolean |
isDaemon() |
ãã®ã¹ã¬ãããããŒã¢ã³ã»ã¹ã¬ããã§ãããã©ãããå€å®ããŸãã
|
boolean |
isInterrupted() |
ãã®ã¹ã¬ãããå²ã蟌ãŸããŠããã©ããã調ã¹ãŸãã
|
void |
join() |
ãã®ã¹ã¬ãããçµäºããã®ãåŸ
æ©ããŸãã
|
void |
join(long millis) |
ãã®ã¹ã¬ãããçµäºããã®ããæé«ã§
millisããªç§åŸ
æ©ããŸãã |
void |
join(long millis, int nanos) |
æé«ã§
millisããªç§ã«nanosããç§ãå ç®ããéããã®ã¹ã¬ãããçµäºããã®ãåŸ
æ©ããŸãã |
void |
resume() |
éæšå¥šã
ãã®ã¡ãœããã¯
suspend()ãšãšãã«äœ¿çšããããã«ã®ã¿ååšããŸãããããã¯ãããããã¯ãçºçãããããããæšå¥šãããŠããŸããã 詳现ã¯ããThread.stopãThread.suspendãããã³Thread.resumeãæšå¥šãããªãçç±ããåç
§ããŠãã ããã |
void |
run() |
ãã®ã¹ã¬ãããå¥åã®
Runnableå®è¡ãªããžã§ã¯ãã䜿çšããŠäœæãããå Žåããã®Runnableãªããžã§ã¯ãã®runã¡ãœãããåŒã³åºãããŸãããã以å€ã®å Žåããã®ã¡ãœããã¯äœãè¡ããã«åŸ©åž°ããŸãã |
void |
setContextClassLoader(ClassLoader cl) |
ãã®Threadã®ã³ã³ããã¹ãClassLoaderãèšå®ããŸãã
|
void |
setDaemon(boolean on) |
ãã®ã¹ã¬ããããããŒã¢ã³ã»ã¹ã¬ãããŸãã¯ãŠãŒã¶ãŒã»ã¹ã¬ãããšããŠããŒã¯ããŸãã
|
static void |
setDefaultUncaughtExceptionHandler(Thread.UncaughtExceptionHandler eh) |
ãã£ãããããªãäŸå€ã«ãããã¹ã¬ãããçªç¶çµäºãããšããããã®ã¹ã¬ããã«å¯ŸããŠã»ãã«ãã³ãã©ãå®çŸ©ãããŠããªããšãã«åŒã³åºãããããã©ã«ãã®ãã³ãã©ãèšå®ããŸãã
|
void |
setName(String name) |
ãã®ã¹ã¬ããã®ååãåŒæ°
nameã«çãããªãããã«å€æŽããŸãã |
void |
setPriority(int newPriority) |
ãã®ã¹ã¬ããã®åªå
é äœã倿ŽããŸãã
|
void |
setUncaughtExceptionHandler(Thread.UncaughtExceptionHandler eh) |
ãã£ãããããªãäŸå€ã«ãããçªç¶ã¹ã¬ãããçµäºãããšãã«äœ¿çšããããã³ãã©ãèšå®ããŸãã
|
static void |
sleep(long millis) |
ã·ã¹ãã ã»ã¿ã€ããŒãšã¹ã±ãžã¥ãŒã©ãæ£ç¢ºã§ããããšãåæãšããŠãçŸåšå®è¡äžã®ã¹ã¬ããããæå®ãããããªç§æ°ã®éãã¹ãªãŒã(äžæçã«å®è¡ã忢)ãããŸãã
|
static void |
sleep(long millis, int nanos) |
ã·ã¹ãã ã»ã¿ã€ããŒãšã¹ã±ãžã¥ãŒã©ãæ£ç¢ºã§ããããšãåæãšããŠãçŸåšå®è¡äžã®ã¹ã¬ããããæå®ãããããªç§æ°ã«æå®ãããããç§æ°ãå ç®ããéãã¹ãªãŒã(äžæçã«å®è¡ã忢)ãããŸãã
|
void |
start() |
ãã®ã¹ã¬ããã®å®è¡ãéå§ããŸããJavaä»®æ³ãã·ã³ã¯ããã®ã¹ã¬ããã®
runã¡ãœãããåŒã³åºããŸãã |
void |
stop() |
éæšå¥šã
ãã®ã¡ãœããã¯æ¬è³ªçã«å®å
šã§ã¯ãããŸããã Thread.stopã䜿ã£ãŠã¹ã¬ããã忢ãããšããã§ãã¯ãããªã
ThreadDeathäŸå€ãã¹ã¿ãã¯ã®äžããäžã«äŒããããçµæããã®ã¹ã¬ããã«ããããã¯ãããŠããã¢ãã¿ãŒã®ããã¯ããã¹ãŠè§£é€ãããŸãã ãããã®ã¢ãã¿ãŒã«ãã£ãŠä»¥åä¿è·ãããŠãããªããžã§ã¯ããæŽåæ§ã®ãªãç¶æ
ã«ãã£ãå Žåãå£ãããªããžã§ã¯ãã¯ã»ãã®ã¹ã¬ããã«å¯ŸããŠå¯èŠã«ãªããåäœãä¿èšŒãããªãããšããããŸãã å€ãã®å Žåãã¿ãŒã²ããã»ã¹ã¬ããã®å®è¡åæ¢ãæç€ºããã«ã¯ãstopã§ã¯ãªããåã«äžéšã®å€æ°ã倿Žããã³ãŒãã䜿çšããå¿
èŠããããŸãã ã¿ãŒã²ããã»ã¹ã¬ããã¯ããã®å€æ°ã宿çã«æ€æ»ããå®è¡ã忢ããã¹ãããšã倿°ã瀺ããŠããå Žåã«ã¯ãã¹ã¬ããã®runã¡ãœããããéåžžã®æ¹æ³ã§åŸ©åž°ããå¿
èŠããããŸãã æ¡ä»¶å€æ°ãªã©ã§ã¿ãŒã²ããã»ã¹ã¬ãããé·ãéåŸ
æ©ããŠããå ŽåãåŸ
æ©ãäžæãããã«ã¯ãinterruptã¡ãœããã䜿çšããŸãã 詳现ã¯ããThread.stopãThread.suspendãããã³Thread.resumeãæšå¥šãããªãçç±ããåç
§ããŠãã ããã |
void |
stop(Throwable obj) |
éæšå¥šã
ãã®ã¡ãœããã¯åœåãã¹ã¬ããã匷å¶çã«åæ¢ããæå®ããã
ThrowableãäŸå€ãšããŠã¹ããŒããããã«èšèšãããŸããã æ¬è³ªçã«å®å
šã§ãªã(詳现ã¯stop()ãåç
§)ãããã«ã¿ãŒã²ããã»ã¹ã¬ããã§åŠçã®æºåãã§ããŠããªãäŸå€ã®çæã«äœ¿çšãããå¯èœæ§ããããŸããã 詳现ã¯ããThread.stopãThread.suspendãããã³Thread.resumeãæšå¥šãããªãçç±ããåç
§ããŠãã ããã |
void |
suspend() |
éæšå¥šã
ãã®ã¡ãœããã¯ãããããã¯ãçºçããããããéæšå¥šã§ãã ã¿ãŒã²ããã»ã¹ã¬ããããäžæãããæç¹ã§ãéèŠãªã·ã¹ãã ã»ãªãœãŒã¹ãä¿è·ããã¢ãã¿ãŒãããã¯ããŠããå Žåãã¿ãŒã²ããã»ã¹ã¬ãããåéããããŸã§ã©ã®ã¹ã¬ããããã®ãªãœãŒã¹ã«ã¢ã¯ã»ã¹ã§ããŸããã ãã®ãšããã¿ãŒã²ããã»ã¹ã¬ãããåéããã¹ã¬ãããã
resumeãåŒã³åºãåã«ãã®ã¢ãã¿ãŒãããã¯ããããšãããšããããããã¯ãçºçããŸãã éåžžããã®ãããªãããããã¯ã¯ãããã»ã¹ã®ãåçµãã«ããæããã«ãªããŸãã 詳现ã¯ããThread.stopãThread.suspendãããã³Thread.resumeãæšå¥šãããªãçç±ããåç
§ããŠãã ããã |
String |
toString() |
ã¹ã¬ããã®ååãåªå
é äœãã¹ã¬ããã»ã°ã«ãŒããå«ããã®ã¹ã¬ããã®æåå衚çŸãè¿ããŸãã
|
static void |
yield() |
çŸåšã®ã¹ã¬ãããçŸåšã®ããã»ããµäœ¿çšéãè²ãçšæãããããšã瀺ããã¹ã±ãžã¥ãŒã©ãžã®ãã³ãã§ãã
|
public static final int MIN_PRIORITY
public static final int NORM_PRIORITY
public static final int MAX_PRIORITY
public Thread()
Threadãªããžã§ã¯ããå²ãåœãŠãŸãã ãã®ã³ã³ã¹ãã©ã¯ã¿ã¯ãThread (null, null, gname) (gnameã¯æ°ãã«çæãããåå)ãšåã广ãæã¡ãŸãã èªåçã«äœæãããååã¯ãnãæŽæ°ãšãããš"Thread-"+nã®åœ¢åŒãåããŸãã public Thread(Runnable target)
Threadãªããžã§ã¯ããå²ãåœãŠãŸãã ãã®ã³ã³ã¹ãã©ã¯ã¿ã¯ãThread (null, target, gname) (gnameã¯æ°ãã«çæãããåå)ãšåã广ãæã¡ãŸãã èªåçã«äœæãããååã¯ãnãæŽæ°ãšãããš"Thread-"+nã®åœ¢åŒãåããŸãã target - ãã®ã¹ã¬ããã®èµ·åæã«åŒã³åºãããrunã¡ãœãããå«ããªããžã§ã¯ãã nullã®å Žåããã®ã¯ã©ã¹ã®runã¡ãœããã¯äœãè¡ããªãã public Thread(ThreadGroup group, Runnable target)
Threadãªããžã§ã¯ããå²ãåœãŠãŸãã ãã®ã³ã³ã¹ãã©ã¯ã¿ã¯ãThread (group, target, gname) (gnameã¯æ°ãã«çæãããåå)ãšåã广ãæã¡ãŸãã èªåçã«äœæãããååã¯ãnãæŽæ°ãšãããš"Thread-"+nã®åœ¢åŒãåããŸãã group - ã¹ã¬ããã»ã°ã«ãŒãã nullã§ããããã€ã»ãã¥ãªãã£ã»ãããŒãžã£ãååšããå ŽåãSecurityManager.getThreadGroup()ã«ãã£ãŠã°ã«ãŒããæ±ºå®ãããŸãã ã»ãã¥ãªãã£ã»ãããŒãžã£ãååšããªãå ŽåãSecurityManager.getThreadGroup()ããnullãè¿ãããå Žåãã°ã«ãŒãã¯çŸåšã®ã¹ã¬ããã®ã¹ã¬ããã»ã°ã«ãŒãã«èšå®ãããŸãã target - ãã®ã¹ã¬ããã®èµ·åæã«åŒã³åºãããrunã¡ãœãããå«ããªããžã§ã¯ãã nullã®å Žåããã®ã¹ã¬ããã®runã¡ãœãããåŒã³åºãããŸãã SecurityException - çŸåšã®ã¹ã¬ããããæå®ãããã¹ã¬ããã»ã°ã«ãŒãå
ã®ã¹ã¬ãããäœæã§ããªãå Žåpublic Thread(String name)
Threadãªããžã§ã¯ããå²ãåœãŠãŸãã ãã®ã³ã³ã¹ãã©ã¯ã¿ã¯ãThread (null, null, name)ãšåã广ãæã¡ãŸãã name - æ°ããã¹ã¬ããã®ååpublic Thread(ThreadGroup group, String name)
Threadãªããžã§ã¯ããå²ãåœãŠãŸãã ãã®ã³ã³ã¹ãã©ã¯ã¿ã¯ãThread (group, null, name)ãšåã广ãæã¡ãŸãã group - ã¹ã¬ããã»ã°ã«ãŒãã nullã§ããããã€ã»ãã¥ãªãã£ã»ãããŒãžã£ãååšããå ŽåãSecurityManager.getThreadGroup()ã«ãã£ãŠã°ã«ãŒããæ±ºå®ãããŸãã ã»ãã¥ãªãã£ã»ãããŒãžã£ãååšããªãå ŽåãSecurityManager.getThreadGroup()ããnullãè¿ãããå Žåãã°ã«ãŒãã¯çŸåšã®ã¹ã¬ããã®ã¹ã¬ããã»ã°ã«ãŒãã«èšå®ãããŸãã name - æ°ããã¹ã¬ããã®ååSecurityException - çŸåšã®ã¹ã¬ããããæå®ãããã¹ã¬ããã»ã°ã«ãŒãå
ã®ã¹ã¬ãããäœæã§ããªãå Žåpublic Thread(Runnable target, String name)
Threadãªããžã§ã¯ããå²ãåœãŠãŸãã ãã®ã³ã³ã¹ãã©ã¯ã¿ã¯ãThread (null, target, name)ãšåã广ãæã¡ãŸãã target - ãã®ã¹ã¬ããã®èµ·åæã«åŒã³åºãããrunã¡ãœãããå«ããªããžã§ã¯ãã nullã®å Žåããã®ã¹ã¬ããã®runã¡ãœãããåŒã³åºãããŸãã name - æ°ããã¹ã¬ããã®ååpublic Thread(ThreadGroup group, Runnable target, String name)
targetãååãšããŠæå®ãããnameãæã€ãgroupã«ãã£ãŠåç
§ãããã¹ã¬ããã»ã°ã«ãŒãã«å±ãããããªãæ°ããThreadãªããžã§ã¯ããå²ãåœãŠãŸãã
ã»ãã¥ãªãã£ã»ãããŒãžã£ãååšããå Žåã¯ãcheckAccessã¡ãœãããThreadGroupããã®åŒæ°ã«æå®ããŠåŒã³åºãããŸãã
ããã«ãgetContextClassLoaderãŸãã¯setContextClassLoaderã¡ãœããããªãŒããŒã©ã€ããããµãã¯ã©ã¹ã®ã³ã³ã¹ãã©ã¯ã¿ããçŽæ¥çãŸãã¯éæ¥çã«åŒã³åºãããå Žåããã®checkPermissionã¡ãœãããRuntimePermission("enableContextClassLoaderOverride")ã¢ã¯ã»ã¹æš©ã§åŒã³åºãããŸãã
æ°ããäœæãããã¹ã¬ããã®åªå é äœã¯ããã®ã¹ã¬ãããäœæããã¹ã¬ãããã€ãŸãçŸåšå®è¡äžã®ã¹ã¬ããã®åªå é äœãšåãã«èšå®ãããŸãã ãã®åªå é äœãæ°ããå€ã«å€æŽããå Žåã¯ãsetPriorityã¡ãœããã䜿çšã§ããŸãã
æ°ããäœæãããã¹ã¬ããã¯ããããäœæããã¹ã¬ãããããŒã¢ã³ã»ã¹ã¬ãããšããŒã¯ãããŠããå Žåã«ã ããããŒã¢ã³ã»ã¹ã¬ãããšããŒã¯ãããŸãã ã¹ã¬ãããããŒã¢ã³ã§ãããã©ããã倿Žããå Žåã¯ãsetDaemonã¡ãœããã䜿çšã§ããŸãã
group - ã¹ã¬ããã»ã°ã«ãŒãã nullã§ããããã€ã»ãã¥ãªãã£ã»ãããŒãžã£ãååšããå ŽåãSecurityManager.getThreadGroup()ã«ãã£ãŠã°ã«ãŒããæ±ºå®ãããŸãã ã»ãã¥ãªãã£ã»ãããŒãžã£ãååšããªãå ŽåãSecurityManager.getThreadGroup()ããnullãè¿ãããå Žåãã°ã«ãŒãã¯çŸåšã®ã¹ã¬ããã®ã¹ã¬ããã»ã°ã«ãŒãã«èšå®ãããŸãã target - ãã®ã¹ã¬ããã®èµ·åæã«åŒã³åºãããrunã¡ãœãããå«ããªããžã§ã¯ãã nullã®å Žåããã®ã¹ã¬ããã®runã¡ãœãããåŒã³åºãããŸãã name - æ°ããã¹ã¬ããã®ååSecurityException - çŸåšã®ã¹ã¬ããããæå®ãããã¹ã¬ããã»ã°ã«ãŒãå
ã«ã¹ã¬ãããäœæã§ããªãããŸãã¯ã³ã³ããã¹ãã»ã¯ã©ã¹ã»ããŒããŒã®ã¡ãœããããªãŒããŒã©ã€ãã§ããªãå Žåãpublic Thread(ThreadGroup group, Runnable target, String name, long stackSize)
Threadãªããžã§ã¯ããå²ãåœãŠãå®è¡ãªããžã§ã¯ããšããŠtargetãä¿æããæå®ãããnameãååãšããŠä¿æããããã«ããŸãããŸããgroupã«ãã£ãŠåç
§ãããã¹ã¬ããã»ã°ã«ãŒãã«æå±ããæå®ãããã¹ã¿ãã¯ã»ãµã€ãºãä¿æããŸãã
ãã®ã³ã³ã¹ãã©ã¯ã¿ã¯ãã¹ã¬ããã®ã¹ã¿ãã¯ã»ãµã€ãºæå®ãå¯èœã§ããç¹ãé€ããThread(ThreadGroup,Runnable,String)ãšåãã§ãã ã¹ã¿ãã¯ã»ãµã€ãºã¯ãä»®æ³ãã·ã³ããã®ã¹ã¬ããã®ã¹ã¿ãã¯ã«å²ãåœãŠãã¢ãã¬ã¹ç©ºéã®ãããã®ãã€ãæ°ã«ãªããŸãã stackSizeãã©ã¡ãŒã¿ãååšããå Žåããã®å¹æã¯ãã©ãããã©ãŒã ã«ãã£ãŠå€§ããç°ãªããŸãã
ããã€ãã®ãã©ãããã©ãŒã ã§ã¯ãstackSizeãã©ã¡ãŒã¿ã«ãã倧ããªå€ãæå®ããããšã§ãã¹ã¬ãããStackOverflowErrorãã¹ããŒããåã«ãã倧ããªå垰深床ãéæããããšãå¯èœã«ãªããŸãã åæ§ã«ãããå°ããªå€ãæå®ããããšã§ãããå€ãã®ã¹ã¬ãããOutOfMemoryError (ãŸãã¯ã»ãã®å
éšãšã©ãŒ)ãã¹ããŒããã«ã䞊è¡ããŠååšããããšãå¯èœã«ãªããŸãã stackSizeãã©ã¡ãŒã¿ã®å€ãšãæå€§å垰深床ã䞊è¡ã¬ãã«ãšã®é¢ä¿ã¯ãã©ãããã©ãŒã ã«ãã£ãŠç°ãªããŸãã ãã©ãããã©ãŒã ã«ãã£ãŠã¯ãstackSizeãã©ã¡ãŒã¿ã®å€ããªãã圱é¿ãäžããªãå ŽåããããŸãã
ä»®æ³ãã·ã³ã¯ãstackSizeãã©ã¡ãŒã¿ãèªç±ã«æ±ããæç€ºã§ããŸãã ãã©ãããã©ãŒã ã§ã¯æå®ãããå€ãå°ããããå Žåãä»®æ³ãã·ã³ã¯ä»£ããã«ãã©ãããã©ãŒã åºæã®æå°å€ã䜿çšã§ããŸããæå®ãããå€ã倧ããããå Žåã«ã¯ãä»®æ³ãã·ã³ã¯ä»£ããã«ãã©ãããã©ãŒã åºæã®æå€§å€ã䜿çšã§ããŸãã åæ§ã«ãä»®æ³ãã·ã³ã¯ãé©åãªå Žåã«ã¯æå®ãããå€ã®åãäžããŸãã¯åäžããèªç±ã«å®è¡(ãŸãã¯å®å
šã«ç¡èŠ)ã§ããŸãã
stackSizeãã©ã¡ãŒã¿ã«å€ãŒããæå®ãããšããã®ã³ã³ã¹ãã©ã¯ã¿ã¯Thread(ThreadGroup, Runnable, String)ã³ã³ã¹ãã©ã¯ã¿ãšæ£ç¢ºã«åãåäœãå®è¡ããŸãã
ãã®ã³ã³ã¹ãã©ã¯ã¿ã®åäœã¯ãã©ãããã©ãŒã ã«ãã£ãŠç°ãªãããã«ãæ éã«äœ¿çšããå¿ èŠããããŸãã æå®ãããèšç®ã®å®è¡ã«å¿ èŠãªã¹ã¬ããã»ã¹ã¿ãã¯ã»ãµã€ãºã¯ãJREå®è£ ã«ãã£ãŠç°ãªãå¯èœæ§ããããŸãã ãã®ãããã¹ã¿ãã¯ã»ãµã€ãºã»ãã©ã¡ãŒã¿ãæ³šææ·±ããã¥ãŒãã³ã°ããããã¢ããªã±ãŒã·ã§ã³ãå®è¡ããJREå®è£ ããšã«ãã¥ãŒãã³ã°ãç¹°ãè¿ãããããããšãå¿ èŠãªå ŽåããããŸãã
å®è£
ã«ããã£ãŠã®ããŒã: Javaãã©ãããã©ãŒã å®è£
è
ã¯ãstackSizeãã©ã¡ãŒã¿ãåºæºã«ããŠå®è£
ã®åäœãããã¥ã¡ã³ãåããŠããããšããèŠãããŸãã
group - ã¹ã¬ããã»ã°ã«ãŒãã nullã§ããããã€ã»ãã¥ãªãã£ã»ãããŒãžã£ãååšããå ŽåãSecurityManager.getThreadGroup()ã«ãã£ãŠã°ã«ãŒããæ±ºå®ãããŸãã ã»ãã¥ãªãã£ã»ãããŒãžã£ãååšããªãå ŽåãSecurityManager.getThreadGroup()ããnullãè¿ãããå Žåãã°ã«ãŒãã¯çŸåšã®ã¹ã¬ããã®ã¹ã¬ããã»ã°ã«ãŒãã«èšå®ãããŸãã target - ãã®ã¹ã¬ããã®èµ·åæã«åŒã³åºãããrunã¡ãœãããå«ããªããžã§ã¯ãã nullã®å Žåããã®ã¹ã¬ããã®runã¡ãœãããåŒã³åºãããŸãã name - æ°ããã¹ã¬ããã®ååstackSize - æ°èŠã¹ã¬ããã®ã¹ã¿ãã¯ã»ãµã€ãºãŸãã¯ãŒã(ãã®ãã©ã¡ãŒã¿ãç¡èŠããããšã瀺ã)ãSecurityException - çŸåšã®ã¹ã¬ããããæå®ãããã¹ã¬ããã»ã°ã«ãŒãå
ã®ã¹ã¬ãããäœæã§ããªãå Žåpublic static Thread currentThread()
public static void yield()
è²äœã¯ãéåžžã§ããã°CPUãéå°ã«äœ¿çšããŠããŸãã¹ã¬ããéã§çžå¯Ÿçãªé²è¡ç¶æ³ãæ¹åããããšãããã¥ãŒãªã¹ãã£ãã¯ãªè©Šã¿ã§ãã ãã®äœ¿çšæã«ã¯è©³çްãªãããã¡ã€ã«ããã³ãããŒã¯ãçµã¿åãããããšã§ãç®çã®å¹æãå®éã«åŸãããŠããããšã確èªãã¹ãã§ãã
ãã®ã¡ãœããã䜿çšããæ©äŒã¯ãŸãã«ãããããŸããã ããã¯ããããã°ç®çããã¹ãç®çã§åœ¹ç«ã€å¯èœæ§ããããŸã(ç«¶åç¶æ
ã«ãããã°ãåçŸããã®ã«åœ¹ç«ã€å¯èœæ§ããã)ã ããã¯ã䞊è¡å¶åŸ¡ã®æ§æèŠçŽ (java.util.concurrent.locksããã±ãŒãžå
ã®æ§æèŠçŽ ãªã©)ãèšèšããéã«ã圹ç«ã€å¯èœæ§ããããŸãã
public static void sleep(long millis)
throws InterruptedException
millis - ããªç§åäœã®ã¹ãªãŒãæéã®é·ãIllegalArgumentException - millisã®å€ãè² ã®å ŽåInterruptedException - äœããã®ã¹ã¬ãããçŸåšã®ã¹ã¬ããã«å²ã蟌ãã å Žåã ãã®äŸå€ãã¹ããŒããããšãçŸåšã®ã¹ã¬ããã®å²èŸŒã¿ã¹ããŒã¿ã¹ã¯ã¯ãªã¢ãããã public static void sleep(long millis,
int nanos)
throws InterruptedException
millis - ããªç§åäœã®ã¹ãªãŒãæéã®é·ãnanos - 0-999999远å ã§ã¹ãªãŒãããããç§IllegalArgumentException - millisã®å€ãè² ã®å ŽåããŸãã¯nanosã®å€ãç¯å²0-999999ã«å«ãŸããªãå ŽåInterruptedException - äœããã®ã¹ã¬ãããçŸåšã®ã¹ã¬ããã«å²ã蟌ãã å Žåã ãã®äŸå€ãã¹ããŒããããšãçŸåšã®ã¹ã¬ããã®å²èŸŒã¿ã¹ããŒã¿ã¹ã¯ã¯ãªã¢ãããã protected Object clone() throws CloneNotSupportedException
cloneãã¯ã©ã¹ObjectCloneNotSupportedException - åžžæCloneablepublic void start()
runã¡ãœãããåŒã³åºããŸãã
ãã®çµæã(startã¡ãœãããžã®åŒã³åºããã埩垰ãã)çŸåšã®ã¹ã¬ãããš(ãã®runã¡ãœãããå®è¡ãã)å¥ã®ã¹ã¬ãããšãã2ã€ã®ã¹ã¬ããã䞊åã«å®è¡ãããŸãã
ã¹ã¬ãããè€æ°åèµ·åããã®ã¯ã決ããŠæ£ãããšã¯èšããŸããã ç¹ã«ãã¹ã¬ããã¯å®è¡ãçµããŠããåèµ·åããããšã¯ã§ããŸããã
IllegalThreadStateException - ã¹ã¬ããããã§ã«èµ·åããŠããå Žåãrun(), stop()public void run()
Runnableå®è¡ãªããžã§ã¯ãã䜿çšããŠäœæãããå Žåããã®Runnableãªããžã§ã¯ãã®runã¡ãœãããåŒã³åºãããŸãããã以å€ã®å Žåããã®ã¡ãœããã¯äœãè¡ããã«åŸ©åž°ããŸãã
Threadã®ãµãã¯ã©ã¹ã¯ããã®ã¡ãœããããªãŒããŒã©ã€ãããªããã°ãªããŸããã
runãã€ã³ã¿ãã§ãŒã¹Runnablestart(), stop(), Thread(ThreadGroup, Runnable, String)@Deprecated public final void stop()
ThreadDeathäŸå€ãã¹ã¿ãã¯ã®äžããäžã«äŒããããçµæããã®ã¹ã¬ããã«ããããã¯ãããŠããã¢ãã¿ãŒã®ããã¯ããã¹ãŠè§£é€ãããŸãã ãããã®ã¢ãã¿ãŒã«ãã£ãŠä»¥åä¿è·ãããŠãããªããžã§ã¯ããæŽåæ§ã®ãªãç¶æ
ã«ãã£ãå Žåãå£ãããªããžã§ã¯ãã¯ã»ãã®ã¹ã¬ããã«å¯ŸããŠå¯èŠã«ãªããåäœãä¿èšŒãããªãããšããããŸãã å€ãã®å Žåãã¿ãŒã²ããã»ã¹ã¬ããã®å®è¡åæ¢ãæç€ºããã«ã¯ãstopã§ã¯ãªããåã«äžéšã®å€æ°ã倿Žããã³ãŒãã䜿çšããå¿
èŠããããŸãã ã¿ãŒã²ããã»ã¹ã¬ããã¯ããã®å€æ°ã宿çã«æ€æ»ããå®è¡ã忢ããã¹ãããšã倿°ã瀺ããŠããå Žåã«ã¯ãã¹ã¬ããã®runã¡ãœããããéåžžã®æ¹æ³ã§åŸ©åž°ããå¿
èŠããããŸãã æ¡ä»¶å€æ°ãªã©ã§ã¿ãŒã²ããã»ã¹ã¬ãããé·ãéåŸ
æ©ããŠããå ŽåãåŸ
æ©ãäžæãããã«ã¯ãinterruptã¡ãœããã䜿çšããŸãã 詳现ã¯ããThread.stopãThread.suspendãããã³Thread.resumeãæšå¥šãããªãçç±ããåç
§ããŠãã ããã
ã»ãã¥ãªãã£ã»ãããŒãžã£ãã€ã³ã¹ããŒã«ãããŠããå Žåã¯ãcheckAccessã¡ãœãããthisããã®åŒæ°ã«æå®ããŠåŒã³åºãããŸãã ãã®çµæãçŸåšã®ã¹ã¬ããã§SecurityExceptionãã¹ããŒãããããšããããŸãã
ãŸãããã®ã¹ã¬ãããçŸåšã®ã¹ã¬ãããšç°ãªãå Žåãã€ãŸããçŸåšã®ã¹ã¬ãããèªå以å€ã®ã¹ã¬ããã忢ããããšããŠããå Žåã¯ãRuntimePermission("stopThread")ãåŒæ°ãšããŠãã»ãã¥ãªãã£ã»ãããŒãžã£ã®checkPermissionã¡ãœãããåŒã³åºãããŸãã ãã®å Žåã«ããçŸåšã®ã¹ã¬ããã§SecurityExceptionãã¹ããŒãããããšããããŸãã
ãã®ã¹ã¬ããã«ãã£ãŠè¡šãããã¹ã¬ããã¯ããããå®è¡ããŠããåäœã«é¢ä¿ãªã匷å¶çã«ç°åžžåæ¢ãããããæ°ããçæããThreadDeathãªããžã§ã¯ããäŸå€ãšããŠã¹ããŒããŸãã
ãŸã èµ·åãããŠããªãã¹ã¬ããã忢ããããšãã§ããŸãã ã¹ã¬ãããæçµçã«èµ·åããããšãããã«çµäºããŸãã
ã¢ããªã±ãŒã·ã§ã³ã¯ãéåžžãšã¯ç°ãªãã¯ãªãŒã³ã¢ããåäœãå®è¡ããªããã°ãªããªãå Žåãé€ããThreadDeathããã£ãããã¹ãã§ã¯ãããŸããããã ããThreadDeathãã¹ããŒãããšãã¹ã¬ãããæ£åŒã«çµäºããåã«tryæã®finallyç¯ãå®è¡ãããããšã«æ³šæããŠãã ããã catchç¯ãThreadDeathãªããžã§ã¯ãããã£ããããå Žåã¯ãã¹ã¬ãããå®éã«çµäºããããã«ãªããžã§ã¯ããã¹ããŒãçŽãããšãéèŠã§ãã
ããã§ãªãå Žåããã£ãããããŠããªãäŸå€ãæ±ãæé«ã¬ãã«ã®ãšã©ãŒã»ãã³ãã©ã¯ããã£ãããããŠããªãäŸå€ãThreadDeathã®ã€ã³ã¹ã¿ã³ã¹ã§ããã°ãã¡ãã»ãŒãžãåºåããããã¢ããªã±ãŒã·ã§ã³ã«éç¥ãããããããšã¯ããŸããã
SecurityException - çŸåšã®ã¹ã¬ããããã®ã¹ã¬ããã倿Žã§ããªãå Žåãinterrupt(), checkAccess(), run(), start(), ThreadDeath, ThreadGroup.uncaughtException(Thread,Throwable), SecurityManager.checkAccess(Thread), SecurityManager.checkPermission(java.security.Permission)@Deprecated public final void stop(Throwable obj)
ThrowableãäŸå€ãšããŠã¹ããŒããããã«èšèšãããŸããã æ¬è³ªçã«å®å
šã§ãªã(詳现ã¯stop()ãåç
§)ãããã«ã¿ãŒã²ããã»ã¹ã¬ããã§åŠçã®æºåãã§ããŠããªãäŸå€ã®çæã«äœ¿çšãããå¯èœæ§ããããŸããã 詳现ã¯ããThread.stopãThread.suspendãããã³Thread.resumeãæšå¥šãããªãçç±ããåç
§ããŠãã ããã UnsupportedOperationExceptionãã¹ããŒããŸããobj - ç¡èŠãããpublic void interrupt()
çŸåšã®ã¹ã¬ãããèªèº«ãžã®å²ã蟌ã¿(åžžã«èš±å¯ããã)ãè¡ãã®ã§ãªããããããã®ã¹ã¬ããã®checkAccessã¡ãœãããåŒã³åºãããŸããããã®éãSecurityExceptionãã¹ããŒãããå¯èœæ§ããããŸãã
Objectã¯ã©ã¹ã®wait()ãwait(long)ããŸãã¯wait(long, int)ã¡ãœããã®åŒåºãããããã¯ãã®ã¯ã©ã¹ã®join()ãjoin(long)ãjoin(long, int)ãsleep(long)ããŸãã¯sleep(long, int)ã¡ãœããã®åŒåºãã«ãã£ãŠãã®ã¹ã¬ããããããã¯ãããŠããå Žåããã®å²èŸŒã¿ã¹ããŒã¿ã¹ãã¯ãªã¢ãããInterruptedExceptionãåä¿¡ãããŸãã
InterruptibleChannelã«å¯ŸããI/Oæäœã§ãã®ã¹ã¬ããããããã¯ãããå Žåããã£ãã«ã¯éããããã¹ã¬ããã®å²èŸŒã¿ã¹ããŒã¿ã¹ãèšå®ãããŸãããŸããã¹ã¬ããã¯ClosedByInterruptExceptionãåãåããŸãã
Selectorã§ãã®ã¹ã¬ããããããã¯ãããå Žåãã¹ã¬ããã®å²èŸŒã¿ã¹ããŒã¿ã¹ãèšå®ãããŠãéžææäœããå³åº§ã«è¿ãããŸããéåžžãè¿ãããå€ã¯ãã»ã¬ã¯ã¿ã®wakeupã¡ãœãããåŒã³åºãããå ŽåãšåããããŒã以å€ã®å€ã«ãªããŸãã
åè¿°ã®æ¡ä»¶ã®ã©ãã«ãåœãŠã¯ãŸããªãå Žåããã®ã¹ã¬ããã®å²èŸŒã¿ã¹ããŒã¿ã¹ãèšå®ãããŸãã
çåããŠããªãã¹ã¬ãããå²èŸŒã¿ãåããããšãã广ãæã€å¿ èŠããªãå Žåã
SecurityException - çŸåšã®ã¹ã¬ããããã®ã¹ã¬ããã倿Žã§ããªãå Žåpublic static boolean interrupted()
ã¹ã¬ãããå²ã蟌ã¿ã®æç¹ã§çåããŠããªãã£ãããã«ç¡èŠãããã¹ã¬ããã§ã®å²èŸŒã¿ã¯ããã®ã¡ãœããã«ãã£ãŠåæ ãããŠfalseãè¿ããŸãã
trueãããã§ãªãå Žåã¯falseãisInterrupted()public boolean isInterrupted()
ã¹ã¬ãããå²ã蟌ã¿ã®æç¹ã§çåããŠããªãã£ãããã«ç¡èŠãããã¹ã¬ããã§ã®å²èŸŒã¿ã¯ããã®ã¡ãœããã«ãã£ãŠåæ ãããŠfalseãè¿ããŸãã
trueãããã§ãªãå Žåã¯falseãinterrupted()@Deprecated public void destroy()
suspend()ãšã»ãŒåãããã«ãããããã¯ãçºçããŸãã ã¿ãŒã²ããã»ã¹ã¬ãããéèŠãªã·ã¹ãã ã»ãªãœãŒã¹ãä¿è·ããããã¯ãä¿æããç¶æ
ã§ç Žæ£ãããå Žåãã©ã®ã¹ã¬ãããåã³ãã®ãªãœãŒã¹ã«ã¢ã¯ã»ã¹ã§ããŸããã å¥ã®ã¹ã¬ããããã®ãªãœãŒã¹ãããã¯ããããšãããšããããããã¯ãçºçããŸãã éåžžããã®ãããªãããããã¯ã¯ãããã»ã¹ã®ãåçµãã«ããæããã«ãªããŸãã 詳现ã¯ããThread.stopãThread.suspendãããã³Thread.resumeãæšå¥šãããªãçç±ããåç
§ããŠãã ããã NoSuchMethodErrorãã¹ããŒããŸããNoSuchMethodError - åžžæpublic final boolean isAlive()
trueãããã§ãªãå Žåã¯falseã@Deprecated public final void suspend()
resumeãåŒã³åºãåã«ãã®ã¢ãã¿ãŒãããã¯ããããšãããšããããããã¯ãçºçããŸãã éåžžããã®ãããªãããããã¯ã¯ãããã»ã¹ã®ãåçµãã«ããæããã«ãªããŸãã 詳现ã¯ããThread.stopãThread.suspendãããã³Thread.resumeãæšå¥šãããªãçç±ããåç
§ããŠãã ããã
ãŸãããã®ã¹ã¬ããã®checkAccessã¡ãœããããåŒæ°ãªãã§åŒã³åºãããŸãã ãã®çµæãçŸåšã®ã¹ã¬ããã§SecurityException ãã¹ããŒãããããšããããŸãã
ã¹ã¬ããã¯ãçåããŠããå Žåã«äžæãããåéãããªãåŠçãå ã«é²ããããšã¯ã§ããŸããã
SecurityException - çŸåšã®ã¹ã¬ããããã®ã¹ã¬ããã倿Žã§ããªãå ŽåãcheckAccess()@Deprecated public final void resume()
suspend()ãšãšãã«äœ¿çšããããã«ã®ã¿ååšããŸãããããã¯ãããããã¯ãçºçãããããããæšå¥šãããŠããŸããã 詳现ã¯ããThread.stopãThread.suspendãããã³Thread.resumeãæšå¥šãããªãçç±ããåç
§ããŠãã ããã
ãŸãããã®ã¹ã¬ããã®checkAccessã¡ãœããããåŒæ°ãªãã§åŒã³åºãããŸãã ãã®çµæãçŸåšã®ã¹ã¬ããã§SecurityExceptionãã¹ããŒãããããšããããŸãã
ã¹ã¬ããã¯ãçåããŠãããäžæãããŠããå Žåãå®è¡ãåéãããŠåŠçãå ã«é²ãŸããããšãèš±å¯ãããŸãã
SecurityException - çŸåšã®ã¹ã¬ããããã®ã¹ã¬ããã倿Žã§ããªãå ŽåãcheckAccess(), suspend()public final void setPriority(int newPriority)
ãŸãããã®ã¹ã¬ããã®checkAccessã¡ãœããããåŒæ°ãªãã§åŒã³åºãããŸãã ãã®çµæãSecurityExceptionãã¹ããŒãããããšããããŸãã
ããã§ãªãå Žåããã®ã¹ã¬ããã®åªå
é äœã¯ãæå®ãããnewPriorityãšã¹ã¬ããã®ã¹ã¬ããã»ã°ã«ãŒãã®æé«èš±å®¹åªå
é äœã®å
ã®ã©ã¡ããå°ããæ¹ã«èšå®ãããŸãã
newPriority - ãã®ã¹ã¬ãããèšå®ããåªå
é äœIllegalArgumentException - åªå
é äœãMIN_PRIORITYããMAX_PRIORITYã®ç¯å²å€ã§ããå ŽåãSecurityException - çŸåšã®ã¹ã¬ããããã®ã¹ã¬ããã倿Žã§ããªãå ŽåãgetPriority(), checkAccess(), getThreadGroup(), MAX_PRIORITY, MIN_PRIORITY, ThreadGroup.getMaxPriority()public final int getPriority()
setPriority(int)public final void setName(String name)
nameã«çãããªãããã«å€æŽããŸãã
ãŸãããã®ã¹ã¬ããã®checkAccessã¡ãœããããåŒæ°ãªãã§åŒã³åºãããŸãã ãã®çµæãSecurityExceptionãã¹ããŒãããããšããããŸãã
name - ãã®ã¹ã¬ããã®æ°ããååãSecurityException - çŸåšã®ã¹ã¬ããããã®ã¹ã¬ããã倿Žã§ããªãå ŽåãgetName(), checkAccess()public final String getName()
setName(String)public final ThreadGroup getThreadGroup()
public static int activeCount()
è¿ãããå€ã¯åãªãæšå®å€ã§ãããããã¯ããã®ã¡ãœãããå éšã®ããŒã¿æ§é äœããã©ããŒã¹ããŠããéã«ã¹ã¬ããæ°ãåçã«å€åããå¯èœæ§ãããã»ããç¹å®ã®ã·ã¹ãã ã»ã¹ã¬ããã®ååšã®åœ±é¿ãåããå¯èœæ§ãããããã§ãã ãã®ã¡ãœããã¯äž»ã«ããããã°ããã³ç£èŠç®çã®ããã®ãã®ã§ãã
public static int enumerate(Thread[] tarray)
ThreadGroup.enumerate(Thread[])ã¡ãœãããåŒã³åºããŸãã
ã¢ããªã±ãŒã·ã§ã³ã§ã¯ãé
åãã©ã®çšåºŠã®å€§ããã«ãªããã«ã€ããŠãããã®æ°ãååŸããããã«activeCountã¡ãœããã䜿çšããå ŽåããããŸãããã ããé
åãå°ããããŠãã¹ãŠã®ã¹ã¬ãããä¿æã§ããªãå Žåãäœåãªã¹ã¬ããã¯éç¥ãªãã«ç¡èŠãããŸãã çŸåšã®ã¹ã¬ããã®ã¹ã¬ããã»ã°ã«ãŒããšãã®ãµãã°ã«ãŒãã«ãããã¹ãŠã®ã¢ã¯ãã£ãã»ã¹ã¬ãããååŸããããšãéèŠãªå ŽåãåŒåºãåŽã¯è¿ãããæŽæ°å€ãå³å¯ã«tarrayã®é·ãæªæºã§ããããšã確èªããå¿
èŠããããŸãã
ãã®ã¡ãœããã®æ¬è³ªçãªç«¶åæ¡ä»¶ã®ããããã®ã¡ãœããã¯ãããã°ããã³ç£èŠç®çã«ã®ã¿äœ¿çšããããšããèŠãããŸãã
tarray - ã¹ã¬ããã®ãªã¹ãã®æ ŒçŽå
ã§ããé
åSecurityException - çŸåšã®ã¹ã¬ããããã®ã¹ã¬ããã»ã°ã«ãŒãã«ã¢ã¯ã»ã¹ã§ããªããšThreadGroup.checkAccess()ã«ãã£ãŠå€å®ãããå Žå@Deprecated public int countStackFrames()
suspend()ã«äŸåããŸãã ãŸãããã®åŒåºãã®çµæã¯ä¿èšŒãããŸããã IllegalThreadStateException - ãã®ã¹ã¬ãããäžæãããŠããªãå Žåãpublic final void join(long millis)
throws InterruptedException
millisããªç§åŸ
æ©ããŸãã 0ã®ã¿ã€ã ã»ã¢ãŠãã¯ç¡æéã«åŸ
æ©ããããšãæå³ããŸãã
ãã®å®è£
ã§ã¯ãthis.isAliveãæ¡ä»¶ãšããŠäžããããthis.waitåŒåºãã®ã«ãŒãã䜿çšããŸãã ã¹ã¬ãããçµäºãããšãthis.notifyAllã¡ãœãããåŒã³åºãããŸãã ã¢ããªã±ãŒã·ã§ã³ã§ã¯ãThreadã€ã³ã¹ã¿ã³ã¹ã®waitãnotifyããŸãã¯notifyAllã䜿çšããªãããšããèŠãããŸãã
millis - ããªç§åäœã®åŸ
æ©æéIllegalArgumentException - millisã®å€ãè² ã®å ŽåInterruptedException - äœããã®ã¹ã¬ãããçŸåšã®ã¹ã¬ããã«å²ã蟌ãã å Žåã ãã®äŸå€ãã¹ããŒããããšãçŸåšã®ã¹ã¬ããã®å²èŸŒã¿ã¹ããŒã¿ã¹ã¯ã¯ãªã¢ãããã public final void join(long millis,
int nanos)
throws InterruptedException
millisããªç§ã«nanosããç§ãå ç®ããéããã®ã¹ã¬ãããçµäºããã®ãåŸ
æ©ããŸãã
ãã®å®è£
ã§ã¯ãthis.isAliveãæ¡ä»¶ãšããŠäžããããthis.waitåŒåºãã®ã«ãŒãã䜿çšããŸãã ã¹ã¬ãããçµäºãããšãthis.notifyAllã¡ãœãããåŒã³åºãããŸãã ã¢ããªã±ãŒã·ã§ã³ã§ã¯ãThreadã€ã³ã¹ã¿ã³ã¹ã®waitãnotifyããŸãã¯notifyAllã䜿çšããªãããšããèŠãããŸãã
millis - ããªç§åäœã®åŸ
æ©æénanos - 0-999999远å ã§åŸ
æ©ããããç§IllegalArgumentException - millisã®å€ãè² ã®å ŽåããŸãã¯nanosã®å€ãç¯å²0-999999ã«å«ãŸããªãå ŽåInterruptedException - äœããã®ã¹ã¬ãããçŸåšã®ã¹ã¬ããã«å²ã蟌ãã å Žåã ãã®äŸå€ãã¹ããŒããããšãçŸåšã®ã¹ã¬ããã®å²èŸŒã¿ã¹ããŒã¿ã¹ã¯ã¯ãªã¢ãããã public final void join()
throws InterruptedException
ãã®ã¡ãœããåŒåºãã®åäœã¯ã次ã®åŒåºãã®åäœãšãŸã£ããåäžã§ãã
join(0)
InterruptedException - äœããã®ã¹ã¬ãããçŸåšã®ã¹ã¬ããã«å²ã蟌ãã å Žåã ãã®äŸå€ãã¹ããŒããããšãçŸåšã®ã¹ã¬ããã®å²èŸŒã¿ã¹ããŒã¿ã¹ã¯ã¯ãªã¢ãããã public static void dumpStack()
Throwable.printStackTrace()public final void setDaemon(boolean on)
ãã®ã¡ãœããã¯ãã¹ã¬ããèµ·ååã«åŒã³åºãå¿ èŠããããŸãã
on - trueã®å Žåããã®ã¹ã¬ãããããŒã¢ã³ã»ã¹ã¬ãããšããŠããŒã¯ããIllegalThreadStateException - ãã®ã¹ã¬ãããçåããŠããå ŽåSecurityException - çŸåšã®ã¹ã¬ããããã®ã¹ã¬ããã倿Žã§ããªãå ŽåãšcheckAccess()ã«ãã£ãŠå€å®ãããå Žåpublic final boolean isDaemon()
trueãããã§ãªãå Žåã¯falseãsetDaemon(boolean)public final void checkAccess()
ã»ãã¥ãªãã£ã»ãããŒãžã£ãååšããå Žåã¯ãcheckAccessã¡ãœããããã®ã¹ã¬ããããã®åŒæ°ã«æå®ããŠåŒã³åºãããŸãã ãã®çµæãSecurityExceptionãã¹ããŒãããããšããããŸãã
SecurityException - çŸåšã®ã¹ã¬ããããã®ã¹ã¬ãããžã®ã¢ã¯ã»ã¹ãèš±ãããŠããªãå ŽåãSecurityManager.checkAccess(Thread)public String toString()
public ClassLoader getContextClassLoader()
ã»ãã¥ãªãã£ã»ãããŒãžã£ãååšããåŒåºãå
ã®ã¯ã©ã¹ã»ããŒããŒãnullã§ãªãããã€ã³ã³ããã¹ãã»ã¯ã©ã¹ã»ããŒããŒãšåãã§ããã®äžäœã¯ã©ã¹ã§ããªãå Žåããã®ã¡ãœããã¯ãã»ãã¥ãªãã£ã»ãããŒãžã£ã®checkPermissionã¡ãœãããRuntimePermission("getClassLoader")ã¢ã¯ã»ã¹æš©ã§åŒã³åºããã³ã³ããã¹ãã»ã¯ã©ã¹ã»ããŒããŒã®ååŸãèš±å¯ãããã確èªããŸãã
nullSecurityException - çŸåšã®ã¹ã¬ãããã³ã³ããã¹ãClassLoaderãååŸã§ããªãå Žåpublic void setContextClassLoader(ClassLoader cl)
getContextClassLoaderçµç±ã§)é©åãªã¯ã©ã¹ã»ããŒããŒãæäŸã§ããããã«ãªããŸãã
ã»ãã¥ãªãã£ã»ãããŒãžã£ãååšããå Žåããã®checkPermissionã¡ãœãããRuntimePermission("setContextClassLoader")ã¢ã¯ã»ã¹æš©ã§åŒã³åºãããã³ã³ããã¹ãClassLoaderã®èšå®ãèš±å¯ãããã確èªãããŸãã
cl - ãã®Threadã®ã³ã³ããã¹ãClassLoaderããŸãã¯ã·ã¹ãã ã»ã¯ã©ã¹ã»ããŒããŒã瀺ã(ãŸãã¯ããŒãã¹ãã©ããã»ã¯ã©ã¹ã»ããŒããŒã®å€±æã瀺ã) nullSecurityException - çŸåšã®ã¹ã¬ãããã³ã³ããã¹ãClassLoaderãèšå®ã§ããªãå Žåpublic static boolean holdsLock(Object obj)
ãã®ã¡ãœããã¯ã次ã®ããã«ãããã°ã©ã ããçŸè¡ã¹ã¬ãããæå®ãããããã¯ããã§ã«ä¿æããŠããããšã瀺ãéã«äœ¿çšãããŸãã
assert Thread.holdsLock(obj);
obj - æææš©ã®ããã¯ããã¹ããããªããžã§ã¯ãNullPointerException - objãnullã®å Žåpublic StackTraceElement[] getStackTrace()
ããã¯ã·ãŒã±ã³ã¹ã§åŒã³åºããããã£ãšãå€ãã¡ãœããã§ããã»ãã¥ãªãã£ã»ãããŒãžã£ãååšãããã®ã¹ã¬ãããçŸåšã®ã¹ã¬ããã§ã¯ãªãå Žåãã¹ã¿ãã¯ã»ãã¬ãŒã¹ãååŸããŠãããã©ããã調ã¹ãããã«ãRuntimePermission("getStackTrace")ã¢ã¯ã»ã¹æš©ã䜿ã£ãŠã»ãã¥ãªãã£ã»ãããŒãžã£ã®checkPermissionã¡ãœãããåŒã³åºãããŸãã
ä»®æ³ãã·ã³ã®äžã«ã¯ãç¹å®ã®ç¶æ³äžã§ã¹ã¿ãã¯ã»ãã¬ãŒã¹ãã1ã€ä»¥äžã®ã¹ã¿ãã¯ã»ãã¬ãŒã ãçç¥ãããã®ããããŸãã æ¥µç«¯ãªå Žåããã®ã¹ã¬ããã«é¢ããã¹ã¿ãã¯ã»ãã¬ãŒã¹æ å ±ãæããªãä»®æ³ãã·ã³ãããã®ã¡ãœããããé·ããŒãã®é åãè¿ãããšãèš±å¯ãããŸãã
SecurityException - ã»ãã¥ãªãã£ã»ãããŒãžã£ãååšãããã®checkPermissionã¡ãœãããã¹ã¬ããã®ã¹ã¿ãã¯ã»ãã¬ãŒã¹ã®ååŸãèš±å¯ããªãå ŽåãSecurityManager.checkPermission(java.security.Permission)ãRuntimePermission, Throwable.getStackTrace()public static Map<Thread,StackTraceElement[]> getAllStackTraces()
getStackTraceã¡ãœããã§æå®ããããã®ãšãªããŸãã
ãã®ã¡ãœãããåŒã³åºãããŠããéã«ãã¹ã¬ãããå®è¡ãããŠããå¯èœæ§ããããŸãã åã¹ã¬ããã®ã¹ã¿ãã¯ã»ãã¬ãŒã¹ã¯ãã¹ãããã·ã§ããã衚ãã ãã§ããåã¹ã¿ãã¯ã»ãã¬ãŒã¹ã¯ç°ãªãææã«ååŸã§ããŸãã ä»®æ³ãã·ã³ãã¹ã¬ããã«é¢ããã¹ã¿ãã¯ã»ãã¬ãŒã¹æ å ±ãæããªãå Žåããããå€ã«é·ããŒãã®é åãè¿ãããŸãã
ã»ãã¥ãªãã£ã»ãããŒãžã£ãååšãããã®ã¹ã¬ãããçŸåšã®ã¹ã¬ããã§ã¯ãªãå Žåããã¹ãŠã®ã¹ã¬ããã®ã¹ã¿ãã¯ã»ãã¬ãŒã¹ãååŸããŠãããã©ããã調ã¹ãããã«ãRuntimePermission("getStackTrace")ã¢ã¯ã»ã¹æš©ãšRuntimePermission("modifyThreadGroup")ã¢ã¯ã»ã¹æš©ã䜿ã£ãŠã»ãã¥ãªãã£ã»ãããŒãžã£ã®checkPermissionã¡ãœãããåŒã³åºãããŸãã
SecurityException - ã»ãã¥ãªãã£ã»ãããŒãžã£ãååšãããã®checkPermissionã¡ãœãããã¹ã¬ããã®ã¹ã¿ãã¯ã»ãã¬ãŒã¹ã®ååŸãèš±å¯ããªãå ŽåãgetStackTrace(), SecurityManager.checkPermission(java.security.Permission), RuntimePermission, Throwable.getStackTrace()public long getId()
public Thread.State getState()
public static void setDefaultUncaughtExceptionHandler(Thread.UncaughtExceptionHandler eh)
ãã£ãããããªãäŸå€ã®æ±ãã¯ã¹ã¬ããã«ãããŸãå¶åŸ¡ãããæ¬¡ã«ã¹ã¬ããã®ThreadGroupãªããžã§ã¯ãã«ãããæçµçã«ã¯ããã©ã«ãã®ãã£ãããããªãäŸå€ãã³ãã©ã«ããå¶åŸ¡ãããŸãã ã¹ã¬ãããæç€ºçãªãã£ãããããªãäŸå€ãã³ãã©ã»ã»ãããæããªãå Žåãã¹ã¬ããã®ã¹ã¬ããã»ã°ã«ãŒã(芪ã¹ã¬ããã»ã°ã«ãŒããå«ã)ã¯ãuncaughtExceptionã¡ãœãããç¹æ®åããŸãããæ¬¡ã«ãããã©ã«ãã»ãã³ãã©ã®uncaughtExceptionã¡ãœãããåŒã³åºãããŸãã
ããã©ã«ãã®ãã£ãããããªãäŸå€ãã³ãã©ãèšå®ããããšã§ãã¢ããªã±ãŒã·ã§ã³ã§ã¯ãã·ã¹ãã ã§æäŸããããããã©ã«ããã®åäœããã§ã«åãå ¥ããŠããã¹ã¬ããã®ãã£ãããããªãäŸå€ãæ±ãæ¹æ³(ç¹å®ã®ããã€ã¹ããã¡ã€ã«ãžã®ãã°ã€ã³ãªã©)ã倿Žã§ããŸãã
éåžžãããã©ã«ãã®ãã£ãããããªãäŸå€ãã³ãã©ã¯ãã¹ã¬ããã®ThreadGroupãªããžã§ã¯ããšç°ãªã£ãŠã¯ãããŸãããããã¯ãç¡éã®ååž°ãæãå¯èœæ§ãããããã§ãã
eh - ããã©ã«ãã®ãã£ãããããªãäŸå€ãã³ãã©ãšããŠäœ¿çšãããªããžã§ã¯ãã nullã®å Žåãããã©ã«ãã®ãã³ãã©ã¯ãªãã SecurityException - ã»ãã¥ãªãã£ã»ãããŒãžã£ãååšãããããRuntimePermission ("setDefaultUncaughtExceptionHandler")ãæåŠããå ŽåsetUncaughtExceptionHandler(java.lang.Thread.UncaughtExceptionHandler), getUncaughtExceptionHandler(), ThreadGroup.uncaughtException(java.lang.Thread, java.lang.Throwable)public static Thread.UncaughtExceptionHandler getDefaultUncaughtExceptionHandler()
setDefaultUncaughtExceptionHandler(java.lang.Thread.UncaughtExceptionHandler)public Thread.UncaughtExceptionHandler getUncaughtExceptionHandler()
public void setUncaughtExceptionHandler(Thread.UncaughtExceptionHandler eh)
ãã£ãããããªãäŸå€ãã³ãã©ãæç€ºçã«èšå®ããããšã§ãã¹ã¬ããã¯ãã£ãããããªãäŸå€ãå®å šã«å¶åŸ¡ã§ããŸãã ãã®ãããªãã³ãã©ãèšå®ãããŠããªãå Žåã¯ãã¹ã¬ããã®ThreadGroupãªããžã§ã¯ãããã³ãã©ãšããŠæ©èœããŸãã
eh - ã¹ã¬ããã®ãã£ãããããªãäŸå€ãã³ãã©ãšããŠäœ¿çšããããªããžã§ã¯ãã nullã®å Žåãã¹ã¬ããã¯æç€ºçãªãã³ãã©ãæããªãã SecurityException - çŸåšã®ã¹ã¬ããããã®ã¹ã¬ããã®å€æŽãèš±ãããŠããªãå ŽåãsetDefaultUncaughtExceptionHandler(java.lang.Thread.UncaughtExceptionHandler), ThreadGroup.uncaughtException(java.lang.Thread, java.lang.Throwable) ãã°ãŸãã¯æ©èœãéä¿¡
詳现ãªAPIãªãã¡ã¬ã³ã¹ããã³éçºè
ããã¥ã¡ã³ãã«ã€ããŠã¯ãJava SEã®ããã¥ã¡ã³ããåç
§ããŠãã ããã ãã®ããã¥ã¡ã³ãã«ã¯ãæŠå¿µçãªæŠèŠãçšèªã®å®çŸ©ãåé¿æ¹æ³ãæå¹ãªã³ãŒãäŸãªã©ã®ãéçºè
ã察象ã«ãããã詳现ãªèª¬æãå«ãŸããŠããŸãã
Copyright © 1993, 2025, Oracle and/or its affiliates. All rights reserved. Use is subject to license terms. Documentation Redistribution Policyãåç
§ããŠãã ããã