JavaTM Platform
Standard Ed. 6

java.lang
클래스 Thread

java.lang.Object 
  상위를 확장 java.lang.Thread
모든 구현된 인터페이스:
Runnable


public class Thread
extends Object
implements Runnable

「thread」란, 프로그램내에서의 실행 thread입니다. Java 가상 머신에서는, 어플리케이션은 병렬에 실행되는 복수의 thread를 사용할 수가 있습니다.  

각 thread에는 우선 순위를 붙일 수 있고 있습니다. 우선 순위의 높은 thread는, 우선 순위의 낮은 thread보다 우선해 실행됩니다. 게다가 각 thread가 demon로서 마크 되고 있는 경우도 있으면, 되어 있지 않은 경우도 있습니다. 어느 thread로 실행중의 코드가 새로운 Thread 객체를 작성하면(자), 이 새로운 thread에는, 그 시점에서는, 작성측의 thread의 우선 순위에 동일한 우선 순위가 설정되어 작성측 thread가 demon인 경우에만, demon thread.  

일반적으로, Java 가상 머신이 기동하는 (일반적으로는 있는 지정된 클래스의 main 라는 이름이 붙일 수 있었던 메소드를 호출한다)와 demon thread가 아닌 thread가 1 개 존재합니다. Java 가상 머신은, 이하의 어떤 것인가의 조건이 발생할 때까지 thread를 계속 실행합니다.

새로운 실행의 thread를 작성하려면 2 방법의 방법이 있습니다. 1 개의 방법은, 클래스를 Thread 의 서브 클래스이다고 선언하는 것입니다. 이 서브 클래스는,Thread 클래스의 run 메소드를 오버라이드(override) 하지 않으면 안됩니다. 그러면 서브 클래스의 인스턴스는 할당할 수 있어 기동될 수가 있습니다. 예를 들어, 초기치보다 큰 소수를 계산하는 thread는, 다음에 나타내도록(듯이) 해 작성할 수 있습니다.


     class PrimeThread extends Thread {
         long minPrime;
         PrimeThread(long minPrime) {
             this.minPrime = minPrime;
         }
 
         public void run() {
             // compute primes larger than minPrime
              .  .  .
         }
     }
 

다음에, 다음에 나타내는 코드로 thread를 작성해, thread의 실행을 개시합니다.

     PrimeThread p = new PrimeThread(143);
     p.start();
 

thread를 작성하는 이제(벌써) 1 개의 방법은,Runnable 인터페이스를 구현하는 클래스를 선언하는 것입니다. 그렇다면, 그 클래스는,run 메소드를 구현합니다. 클래스의 인스턴스를 할당할 수 있어Thread 의 작성시에 인수로서 건네받아 개시됩니다. 이 방법에서의 같은 예는, 다음에 나타내게 됩니다.


     class PrimeRun implements Runnable {
         long minPrime;
         PrimeRun(long minPrime) {
             this.minPrime = minPrime;
         }
 
         public void run() {
             // compute primes larger than minPrime
              .  .  .
         }
     }
 

다음에, 다음에 나타내는 코드로 thread를 작성해, thread의 실행을 개시합니다.

     PrimeRun p = new PrimeRun(143);
     new Thread(p). start();
 

각 thread는 식별을 위한 이름을 가집니다. 복수의 thread가 같은 이름을 가지는 일이 있습니다. thread의 작성시에 이름이 지정되지 않으면 thread에는 새로운 이름이 생성됩니다.

도입된 버젼:
JDK1. 0
관련 항목:
Runnable , Runtime.exit(int) , run() , stop()

상자의 클래스의 개요
static class Thread.State
          thread 상태입니다.
static interface Thread.UncaughtExceptionHandler
          캐치 되지 않는 예외에 의해,Thread 가 돌연 종료했을 때에 불려 가는 것 핸들러의 인터페이스입니다.
 
필드의 개요
static int MAX_PRIORITY
          thread로 설정할 수 있는 최고 우선 순위입니다.
static int MIN_PRIORITY
          thread로 설정할 수 있는 최저 우선 순위입니다.
static int NORM_PRIORITY
          thread에 할당할 수 있는 디폴트의 우선 순위입니다.
 
생성자 의 개요
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 객체를 할당합니다.
Thread (ThreadGroup  group, Runnable  target, String  name, long stackSize)
          새로운 Thread 객체를 할당해 실행 객체로서 target 를 보관 유지해, 지정된 name 를 이름으로서 보관 유지하도록(듯이) 합니다.
Thread (ThreadGroup  group, String  name)
          새로운 Thread 객체를 할당합니다.
 
메소드의 개요
static int activeCount ()
          현행 thread의 thread 그룹내의 액티브한 thread수를 돌려줍니다.
 void checkAccess ()
          현재 실행중의 thread가, 이 thread를 변경하기 위한 액세스권을 가지고 있을지 어떨지를 판정합니다.
 int countStackFrames ()
          추천 되고 있지 않습니다.  이 호출의 정의는, 추천되어 있지 않은 suspend() 에 의존합니다. 또, 이 호출의 결과는 보증되지 않습니다.
static Thread currentThread ()
          현재 실행중의 thread 객체의 참조를 돌려줍니다.
 void destroy ()
          추천 되고 있지 않습니다.  이 메소드는 원래 클린 업없이 파기되도록(듯이) 설계되고 있었습니다. 보관 유지되는 모니터는 락 된 상태를 유지합니다. 다만, 이 메소드는 구현되지 않았습니다. 구현되고 있으면(자),suspend() 와 거의 똑같이 데드락이 발생합니다. 타겟 thread가 중요한 system resource를 보호하는 락을 보관 유지한 상태로 파기되었을 경우, 어느 thread도 다시 이 자원에 액세스 할 수 없습니다. 다른 thread가 이 자원을 잠그려고 하면(자), 데드락이 발생합니다. 일반적으로, 이러한 데드락은, 프로세스의 「동결」에 의해 밝혀집니다. 자세한 것은, 이하를 참조해 주세요. Thread.stop, Thread.suspend, Thread.resume, 및 Runtime.runFinalizersOnExit 가 추천 되지 않는 이유
static void dumpStack ()
          현재의 thread의 스택 트레이스를 표준 에러 스트림에 출력합니다.
static int enumerate (Thread [] tarray)
          현행 thread의 thread 그룹 및 그 하위 그룹내의 모든 액티브한 thread를, 지정된 배열에 카피합니다.
static Map <Thread ,StackTraceElement []> getAllStackTraces ()
          모든 라이브 thread의 스택 트레이스 맵을 돌려줍니다.
 ClassLoader getContextClassLoader ()
          이 Thread 의 문맥 ClassLoader 를 돌려줍니다.
static Thread.UncaughtExceptionHandler getDefaultUncaughtExceptionHandler ()
          캐치 되지 않는 예외에 의해 thread가 돌연 종료했을 때에 불려 가는 디폴트의 핸들러를 돌려줍니다.
 long getId ()
          이 thread의 식별자를 돌려줍니다.
 String getName ()
          이 thread의 이름을 돌려줍니다.
 int getPriority ()
          이 thread의 우선 순위를 돌려줍니다.
 StackTraceElement [] getStackTrace ()
          이 thread의 스택 덤프를 나타내는 스택 트레이스 요소의 배열을 돌려줍니다.
 Thread.State getState ()
          이 thread 상태를 돌려줍니다.
 ThreadGroup getThreadGroup ()
          이 thread가 소속하는 thread 그룹을 돌려줍니다.
 Thread.UncaughtExceptionHandler getUncaughtExceptionHandler ()
          캐치 되지 않는 예외에 의해 thread가 돌연 종료했을 때에 불려 가는 핸들러를 돌려줍니다.
static boolean holdsLock (Object  obj)
          현행 thread가 지정된 객체에 대한 모니터 락을 보관 유지하는 경우에게만,true 를 돌려줍니다.
 void interrupt ()
          이 thread에 끼어듭니다.
static boolean interrupted ()
          현재의 thread가 끼어들어지고 있는지 어떤지를 조사합니다.
 boolean isAlive ()
          이 thread가 생존하고 있을지 어떨지를 판정합니다.
 boolean isDaemon ()
          이 thread가 demon thread일지 어떨지를 판정합니다.
 boolean isInterrupted ()
          이 thread가 끼어들어지고 있는 제발을 조사합니다.
 void join ()
          이 thread가 종료하는 것을 대기합니다.
 void join (long millis)
          이 thread가 종료하는 것을, 최고로 millis 밀리 세컨드 대기합니다.
 void join (long millis, int nanos)
          최고로 millis 밀리 세컨드에 nanos 나노초를 가산한 사이, 이 thread가 종료하는 것을 대기합니다.
 void resume ()
          추천 되고 있지 않습니다.  이 메소드는 데드락을 발생하기 쉽기 때문에 추천 되지 않습니다. suspend() 와 함께 사용하기 위해(때문에)인 만큼 제공되고 있습니다. 자세한 것은, 이하를 참조해 주세요. Thread.stop, Thread.suspend, Thread.resume, 및 Runtime.runFinalizersOnExit 가 추천 되지 않는 이유
 void run ()
          이 thread가 별개의 Runnable 실행 객체를 사용해 작성되었을 경우, 그 Runnable 객체의 run 메소드가 불려 갑니다.
 void setContextClassLoader (ClassLoader  cl)
          이 Thread 의 문맥 ClassLoader 를 설정합니다.
 void setDaemon (boolean on)
          이 thread를, demon thread 또는 사용자 thread로서 마크 합니다.
static void setDefaultUncaughtExceptionHandler (Thread.UncaughtExceptionHandler  eh)
          캐치 되지 않는 예외에 의해, thread가 돌연 종료했을 때나, 이 thread에 대해서 그 밖에 핸들러가 정의되어 있지 않을 때에 불려 가는 디폴트의 핸들러를 설정합니다.
 void setName (String  name)
          이 thread의 이름을 인수 name 에 동일해지도록(듯이) 변경합니다.
 void setPriority (int newPriority)
          이 thread의 우선 순위를 변경합니다.
 void setUncaughtExceptionHandler (Thread.UncaughtExceptionHandler  eh)
          캐치 되지 않는 예외에 의해, 돌연 thread가 종료했을 때에 사용되는 핸들러를 설정합니다.
static void sleep (long millis)
          시스템 타이머-와 스케쥴러가 정확한 것을 전제로서 현재 실행중의 thread를, 지정된 밀리 세컨드수의 사이, sleeve (일시적으로 실행을 정지) 시킵니다.
static void sleep (long millis, int nanos)
          시스템 타이머-와 스케쥴러가 정확한 것을 전제로서 현재 실행중의 thread를, 지정된 밀리 세컨드수로 지정된 나노초수를 가산한 사이, sleeve (실행을 정지) 시킵니다.
 void start ()
          이 thread의 실행을 개시합니다.
 void stop ()
          추천 되고 있지 않습니다.  이 메소드는 본질적으로 안전하지는 않습니다. Thread.stop 를 사용해 thread를 정지하면(자), 체크되어 있지 않은 ThreadDeath 예외가 스택아래에서 위에게 전할 수 있었던 결과, 그 thread에 의해 락 되고 있던 모니터의 락이 모두 해제됩니다. 이러한 모니터에 의해 직전까지 보호되고 있던 객체가 무결성의 없는 상태에 있었을 경우, 망가진 객체는 다른 thread에 대해서 가시가 되어, 동작이 보증되지 않는 것이 있습니다. 많은 경우, 타겟 thread의 실행 정지를 지시하려면 ,stop 는 아니고, 단지 일부의 변수를 변경하는 코드를 사용할 필요가 있습니다. 타겟 thread는, 이 변수를 정기적으로 검사해, 실행을 정지해야 할 일을 변수가 가리키고 있는 경우에는, thread의 run 메소드로부터 일반적으로의 방법으로 복귀할 필요가 있습니다. 조건 변수등으로 타겟 thread가 오랫동안 대기하고 있는 경우, 대기를 중단시키려면 ,interrupt 메소드를 사용합니다. 자세한 것은, 이하를 참조해 주세요. Thread.stop, Thread.suspend, Thread.resume, 및 Runtime.runFinalizersOnExit 가 추천 되지 않는 이유
 void stop (Throwable  obj)
          추천 되고 있지 않습니다.  이 메소드는 본질적으로 안전하지는 않습니다. stop() 를 참조해 주세요. 게다가 이 메소드는, 타겟 thread로 처리의 준비가 되어 있지 않은 예외의 생성에 사용되는 일이 있는 점에서도 위험합니다 (이 메소드가 없으면 thread에 의해 throw 될리가 없는, 체크된 예외 등). 자세한 것은, 이하를 참조해 주세요. Thread.stop, Thread.suspend, Thread.resume, 및 Runtime.runFinalizersOnExit 가 추천 되지 않는 이유
 void suspend ()
          추천 되고 있지 않습니다.  이 메소드는 데드락을 발생하기 쉽기 때문에 추천 되지 않습니다. 타겟 thread가, 중단되는 시점에서, 중요한 system resource를 보호하는 모니터를 잠그고 있는 경우, 타겟 thread가 재개될 때까지 어느 thread도 그 자원에 액세스 할 수 없습니다. 이 때, 타겟 thread를 재개하는 thread가,resume 를 호출하기 전에 이 모니터를 잠그려고 하면(자), 데드락이 발생합니다. 일반적으로, 이러한 데드락은, 프로세스의 「동결」에 의해 밝혀집니다. 자세한 것은, 이하를 참조해 주세요. Thread.stop, Thread.suspend, Thread.resume, 및 Runtime.runFinalizersOnExit 가 추천 되지 않는 이유
 String toString ()
          thread의 이름, 우선 순위, thread 그룹을 포함한 이 thread의 캐릭터 라인 표현을 돌려줍니다.
static void yield ()
          현재 실행중의 thread 객체를 일시적으로 휴지시켜, 다른 thread를 실행할 수 있도록(듯이) 합니다.
 
클래스 java.lang. Object 로부터 상속된 메소드
clone , equals , finalize , getClass , hashCode , notify , notifyAll , wait , wait , wait
 

필드의 상세

MIN_PRIORITY

public static final int MIN_PRIORITY
thread로 설정할 수 있는 최저 우선 순위입니다.

관련 항목:
정수 필드치

NORM_PRIORITY

public static final int NORM_PRIORITY
thread에 할당할 수 있는 디폴트의 우선 순위입니다.

관련 항목:
정수 필드치

MAX_PRIORITY

public static final int MAX_PRIORITY
thread로 설정할 수 있는 최고 우선 순위입니다.

관련 항목:
정수 필드치
생성자 의 상세

Thread

public Thread()
새로운 Thread 객체를 할당합니다. 이 생성자 은,Thread(null, null, gname) 와 같은 효과를 가집니다. 이 경우,gname 는, 새롭게 작성되는 이름입니다. 자동적으로 작성되는 이름은,n 를 정수로 하면(자) "Thread-"+n 의 형식을 취합니다.

관련 항목:
Thread(ThreadGroup, Runnable, String)

Thread

public Thread(Runnable  target)
새로운 Thread 객체를 할당합니다. 이 생성자 은,Thread(null, target, gname) 와 같은 효과를 가집니다. 이 경우,gname 는, 새롭게 작성되는 이름입니다. 자동적으로 작성되는 이름은,n 를 정수로 하면(자) "Thread-"+n 의 형식을 취합니다.

파라미터:
target - 그 run 메소드가 불려 가는 객체
관련 항목:
Thread(ThreadGroup, Runnable, String)

Thread

public Thread(ThreadGroup  group,
              Runnable  target)
새로운 Thread 객체를 할당합니다. 이 생성자 은,Thread(group, target, gname) 와 같은 효과를 가집니다. 이 경우,gname 는, 새롭게 작성되는 이름입니다. 자동적으로 작성되는 이름은,n 를 정수로 하면(자) "Thread-"+n 의 형식을 취합니다.

파라미터:
group - thread 그룹
target - 그 run 메소드가 불려 가는 객체
예외:
SecurityException - 현재의 thread가, 지정된 thread 그룹내의 thread를 작성할 수 없는 경우
관련 항목:
Thread(ThreadGroup, Runnable, String)

Thread

public Thread(String  name)
새로운 Thread 객체를 할당합니다. 이 생성자 은,Thread(null, null, name) 와 같은 효과를 가집니다.

파라미터:
name - 새로운 thread의 이름
관련 항목:
Thread(ThreadGroup, Runnable, String)

Thread

public Thread(ThreadGroup  group,
              String  name)
새로운 Thread 객체를 할당합니다. 이 생성자 은,Thread(group, null, name) 와 같은 효과를 가집니다.

파라미터:
group - thread 그룹
name - 새로운 thread의 이름
예외:
SecurityException - 현재의 thread가, 지정된 thread 그룹내의 thread를 작성할 수 없는 경우
관련 항목:
Thread(ThreadGroup, Runnable, String)

Thread

public Thread(Runnable  target,
              String  name)
새로운 Thread 객체를 할당합니다. 이 생성자 은,Thread(null, target, name) 와 같은 효과를 가집니다.

파라미터:
target - 그 run 메소드가 불려 가는 객체
name - 새로운 thread의 이름
관련 항목:
Thread(ThreadGroup, Runnable, String)

Thread

public Thread(ThreadGroup  group,
              Runnable  target,
              String  name)
그 실행 객체로서 target , 이름으로서 지정된 name 를 가지는,group 에 의해 참조되는 thread 그룹에 속하는 것 같은, 새로운 Thread 객체를 할당합니다.  

groupnull 로, 시큐리티 매니저가 존재하는 경우, 그룹은 시큐리티 매니저의 getThreadGroup 메소드에 의해 정해집니다. groupnull 로 시큐리티 매니저가 존재하지 않는 경우, 또는 시큐리티 매니저의 getThreadGroup 메소드가 null 를 돌려주는 경우, 그룹은 신규 thread를 작성중의 thread와 같은 ThreadGroup 로 설정됩니다.

시큐리티 매니저가 존재하는 경우는, ThreadGroup 를 인수로서 건네주어 checkAccess 메소드를 호출합니다.  

또,getContextClassLoader 메소드 또는 setContextClassLoader 메소드를 오버라이드(override) 하는 서브 클래스의 생성자 에 의해 직접적 또는 간접적으로 불려 갔을 때,RuntimePermission("enableContextClassLoaderOverride") 액세스권을 사용해 checkPermission 메소드를 호출합니다. 그 결과, SecurityException 가 발생하는 일이 있습니다.

target 인수가 null 가 아닌 경우, 이 thread가 기동되면(자) targetrun 메소드가 불려 갑니다. target 인수가 null 인 경우는, 이 thread가 기동될 때 이 thread의 run 메소드가 불려 갑니다.  

새롭게 작성된 thread의 우선 순위는, 그 thread를 작성한 thread, 즉 현재 실행중의 thread의 우선 순위와 같게 설정됩니다. 이 우선 순위를 새로운 값으로 변경하는 경우는,setPriority 메소드를 사용할 수 있습니다.  

새롭게 작성된 thread는, 그것을 작성하는 thread가 demon thread와 마크 되고 있는 경우에만, demon thread와 마크 됩니다. thread가 demon일지 어떨지를 변경하는 경우는,setDaemon 메소드를 사용할 수 있습니다.

파라미터:
group - thread 그룹
target - 그 run 메소드가 불려 가는 객체
name - 새로운 thread의 이름
예외:
SecurityException - 현재의 thread가, 지정된 thread 그룹내에 thread를 작성할 수 없는, 또는 문맥 클래스 로더의 메소드를 오버라이드(override) 할 수 없는 경우
관련 항목:
Runnable.run() , run() , setDaemon(boolean) , setPriority(int) , ThreadGroup.checkAccess() , SecurityManager.checkAccess(java.lang.Thread)

Thread

public Thread(ThreadGroup  group,
              Runnable  target,
              String  name,
              long stackSize)
새로운 Thread 객체를 할당해 실행 객체로서 target 를 보관 유지해, 지정된 name 를 이름으로서 보관 유지하도록(듯이) 합니다. 또,group 에 의해 참조되는 thread 그룹에 소속해, 지정된 「스택 사이즈」를 보관 유지합니다.

이 생성자 은, thread의 스택 사이즈 지정이 가능한 점을 제외해,Thread(ThreadGroup, Runnable, String) 와 같습니다. 스택 사이즈는, 가상 머신을 이 thread의 스택에 할당하는 address 공간의 대략의 바이트수가 됩니다. stackSize 파라미터가 존재하는 경우, 그 효과는 플랫폼에 의해 크게 다릅니다.

몇개의 플랫폼에서는,stackSize 파라미터에 의해 큰 값을 지정하는 것으로, thread가 StackOverflowError 를 throw 하기 전에 의해 큰 회귀 심도를 달성하는 것이 가능하게 됩니다. 같이보다 작은 값을 지정하는 것으로, 보다 많은 thread가 OutOfMemoryError (또는 다른 내부 에러)를 throw 하지 않고 , 병행해 존재하는 것이 가능하게 됩니다. stackSize 파라미터의 값과 최대 회귀 심도나 병행 레벨과의 관계는 플랫폼에 따라서 다릅니다. 플랫폼에 따라서는,stackSize 파라미터의 값이 어떤 영향을 주지 않는 경우가 있습니다.

가상 머신은,stackSize 파라미터를 자유롭게 취급해, 지시할 수가 있습니다. 플랫폼에서는 지정된 값이 너무 작은 경우, 가상 머신은 대신에 플랫폼 고유의 최소치를 사용할 수 있습니다. 지정된 값이 너무 큰 경우에는, 가상 머신은 대신에 플랫폼 고유의 최대치를 사용할 수 있습니다. 같이 가상 머신은, 적절한 경우에는 지정된 값의 절상해 또는 인하를 자유롭게 실행 (또는 완전하게 무시)할 수 있습니다.

stackSize 파라미터에 값제로를 지정하면(자), 이 생성자 은 Thread(ThreadGroup, Runnable, String) 생성자 과 정확하게 같은 동작을 실행합니다.

이 생성자 의 동작은 플랫폼에 따라서 다르기 위해서(때문에), 신중하게 사용할 필요가 있습니다. 지정된 계산의 실행에 필요한 thread 스택 사이즈는, JRE 구현에 따라서 다를 가능성이 있습니다. 이 때문에, 스택 사이즈 파라미터를 주의 깊게 튜닝 하거나 어플리케이션을 실행하는 JRE 구현 마다 튜닝을 반복하거나 하는 것이 필요한 경우가 있습니다.

구현상의 주의 :Java 플랫폼 구현자는,stackSize parameter 를 기준으로 해 구현의 동작을 문서화해 두는 것을 추천합니다.

파라미터:
group - thread 그룹
target - 그 run 메소드가 불려 가는 객체
name - 새로운 thread의 이름
stackSize - 신규 thread의 스택 사이즈 또는 제로 (이 파라미터를 무시하는 것을 나타낸다)
예외:
SecurityException - 현재의 thread가, 지정된 thread 그룹내의 thread를 작성할 수 없는 경우
도입된 버젼:
1.4
메소드의 상세

currentThread

public static Thread  currentThread()
현재 실행중의 thread 객체의 참조를 돌려줍니다.

반환값:
현재 실행중의 thread

yield

public static void yield()
현재 실행중의 thread 객체를 일시적으로 휴지시켜, 다른 thread를 실행할 수 있도록(듯이) 합니다.


sleep

public static void sleep(long millis)
                  throws InterruptedException 
시스템 타이머-와 스케쥴러가 정확한 것을 전제로서 현재 실행중의 thread를, 지정된 밀리 세컨드수의 사이, sleeve (일시적으로 실행을 정지) 시킵니다. thread는 모니터의 소유권을 잃지 않습니다.

파라미터:
millis - 밀리 세컨드 단위의 sleeve 시간의 길이
예외:
InterruptedException - 어떠한 thread가 현재의 thread에 끼어들었을 경우. 이 예외가 throw 되면(자), 현재의 thread의 「인터럽트 상태」는 클리어 되는
관련 항목:
Object.notify()

sleep

public static void sleep(long millis,
                         int nanos)
                  throws InterruptedException 
시스템 타이머-와 스케쥴러가 정확한 것을 전제로서 현재 실행중의 thread를, 지정된 밀리 세컨드수로 지정된 나노초수를 가산한 사이, sleeve (실행을 정지) 시킵니다. thread는 모니터의 소유권을 잃지 않습니다.

파라미터:
millis - 밀리 세컨드 단위의 sleeve 시간의 길이
nanos - sleeve하기 위한 0 ~ 999999 의 추가 나노초
예외:
IllegalArgumentException - millis 의 값이 음수의 경우, 또는 nanos 의 값이 0 ~ 999999 의 범위외의 경우
InterruptedException - 어떠한 thread가 현재의 thread에 끼어들었을 경우. 이 예외가 throw 되면(자), 현재의 thread의 「인터럽트 상태」는 클리어 되는
관련 항목:
Object.notify()

start

public void start()
이 thread의 실행을 개시합니다. Java 가상 머신은, 이 thread의 run 메소드를 호출합니다.  

그 결과, (start 메소드에의 호출로부터 복귀한다) 현재의 thread와 (그 run 메소드를 실행한다) 다른 thread라고 하는 2 개의 thread가 병렬에 실행됩니다.  

thread를 여러 차례 기동하는 것은, 결코 올바르다고는 말할 수 없습니다. 특히, thread는 실행을 끝내고 나서 재기동할 수 없습니다.

예외:
IllegalThreadStateException - thread가 벌써 기동하고 있었을 경우
관련 항목:
run() , stop()

run

public void run()
이 thread가 별개의 Runnable 실행 객체를 사용해 작성되었을 경우, 그 Runnable 객체의 run 메소드가 불려 갑니다. 그렇지 않은 경우, 이 메소드는 아무것도 실시하지 않고 복귀합니다.  

Thread 의 서브 클래스는, 이 메소드를 오버라이드(override) 하지 않으면 안됩니다.

정의:
인터페이스 Runnable 내의 run
관련 항목:
start() , stop() , Thread(ThreadGroup, Runnable, String)

stop

@Deprecated 
public final void stop()
추천 되고 있지 않습니다.  이 메소드는 본질적으로 안전하지는 않습니다. Thread.stop 를 사용해 thread를 정지하면(자), 체크되어 있지 않은 ThreadDeath 예외가 스택아래에서 위에게 전할 수 있었던 결과, 그 thread에 의해 락 되고 있던 모니터의 락이 모두 해제됩니다. 이러한 모니터에 의해 직전까지 보호되고 있던 객체가 무결성의 없는 상태에 있었을 경우, 망가진 객체는 다른 thread에 대해서 가시가 되어, 동작이 보증되지 않는 것이 있습니다. 많은 경우, 타겟 thread의 실행 정지를 지시하려면 ,stop 는 아니고, 단지 일부의 변수를 변경하는 코드를 사용할 필요가 있습니다. 타겟 thread는, 이 변수를 정기적으로 검사해, 실행을 정지해야 할 일을 변수가 가리키고 있는 경우에는, thread의 run 메소드로부터 일반적으로의 방법으로 복귀할 필요가 있습니다. 조건 변수등으로 타겟 thread가 오랫동안 대기하고 있는 경우, 대기를 중단시키려면 ,interrupt 메소드를 사용합니다. 자세한 것은, 이하를 참조해 주세요. Thread.stop, Thread.suspend, Thread.resume, 및 Runtime.runFinalizersOnExit 가 추천 되지 않는 이유

thread에 강제적으로 실행을 정지시킵니다.  

시큐리티 매니저가 인스톨 되고 있는 경우,this 를 인수로서 시큐리티 매니저의 checkAccess 메소드가 불려 갑니다. 이 결과, 현재의 thread로 SecurityException 가 throw 되는 일이 있습니다.  

또, 이 thread가 현재의 thread와 다른 경우, 즉, 현재의 thread가 자신 이외의 thread를 정지하려고 하고 있는 경우는,RuntimePermission("stopThread") 를 인수로서 시큐리티 매니저의 checkPermission 메소드도 불려 갑니다. 이 경우에도, 현재의 thread로 SecurityException 가 throw 되는 일이 있습니다.  

이 thread에 의해 나타내지는 thread는, 그것이 실행하고 있던 동작에 관계없이 강제적으로 이상 정지 당해 새롭게 생성한 ThreadDeath 객체를 예외로서 throw 합니다.  

아직 기동되어 있지 않은 thread를 정지할 수가 있습니다. thread가 최종적으로 기동되자, 곧바로 종료합니다.  

어플리케이션은, 일반적으로과는 다른 클린 업 동작을 실행해야 하는 경우를 제외해,ThreadDeath 를 캐치 해야 하지는 않습니다. 다만,ThreadDeath 를 throw 하면(자), thread가 정식으로 종료하기 전에 try 문의 finally 절이 실행되는 것에 주의해 주세요. catch 절이 ThreadDeath 객체를 캐치 하는 경우는, thread가 실제로 종료하도록(듯이) 객체를 throw 다시 하는 것이 중요합니다.  

그렇지 않은 경우, 캐치되어 있지 않은 예외를 취급하는 최고 레벨의 에러 핸들러는, 캐치되어 있지 않은 예외가 ThreadDeath 의 인스턴스이면, 메세지를 출력하거나 어플리케이션에 통지하거나 하는 것은 하지 않습니다.

예외:
SecurityException - 현재의 thread가 이 thread를 변경할 수 없는 경우
관련 항목:
interrupt() , checkAccess() , run() , start() , ThreadDeath , ThreadGroup.uncaughtException(Thread, Throwable) , SecurityManager.checkAccess(Thread) , SecurityManager.checkPermission(java.security.Permission)

stop

@Deprecated 
public final void stop(Throwable  obj)
추천 되고 있지 않습니다.  이 메소드는 본질적으로 안전하지는 않습니다. stop() 를 참조해 주세요. 게다가 이 메소드는, 타겟 thread로 처리의 준비가 되어 있지 않은 예외의 생성에 사용되는 일이 있는 점에서도 위험합니다 (이 메소드가 없으면 thread에 의해 throw 될리가 없는, 체크된 예외 등). 자세한 것은, 이하를 참조해 주세요. Thread.stop, Thread.suspend, Thread.resume, 및 Runtime.runFinalizersOnExit 가 추천 되지 않는 이유

thread에 강제적으로 실행을 정지시킵니다.  

시큐리티 매니저가 인스톨 되고 있는 경우, 시큐리티 매니저의 checkAccess 메소드가 불려 갑니다. 이 결과, 현재의 thread로 SecurityException 가 throw 되는 일이 있습니다.  

또, 이 thread가 현재의 thread와 다른 경우, 즉, 현재의 thread가 자신 이외의 thread를 정지하려고 하고 있는 경우, 또는 objThreadDeath 의 인스턴스가 아닌 경우는,RuntimePermission("stopThread") 를 인수로서 시큐리티 매니저의 checkPermission 메소드가 불려 갑니다. 이 경우에도, 현재의 thread로 SecurityException 가 throw 되는 일이 있습니다.  

인수 obj 가 null 의 경우,NullPointerException 가 (현재의 thread내에서) throw 됩니다.  

이 thread에 의해 나타내지는 thread는, 그것이 실행하는 동작에는 관계없이 강제적으로 종료되어 예외로서 Throwable 객체 obj 가 throw 됩니다. 이것은 일반적으로에서는 행해지지 않는 동작이기 (위해)때문에, 일반적으로은 인수를 설정하지 않는 stop 메소드를 사용해 주세요.  

아직 기동되어 있지 않은 thread를 정지할 수가 있습니다. thread가 최종적으로 기동되자, 곧바로 종료합니다.

파라미터:
obj - throw 대상의 Throwable 객체
예외:
SecurityException - 현재의 thread가 이 thread를 변경할 수 없는 경우
NullPointerException - obj 가 null 의 경우
관련 항목:
interrupt() , checkAccess() , run() , start() , stop() , SecurityManager.checkAccess(Thread) , SecurityManager.checkPermission(java.security.Permission)

interrupt

public void interrupt()
이 thread에 끼어듭니다.

현재의 thread가 자신에게 끼어들지 않은 한 (이 인터럽트는 허가된다), 이 thread의 checkAccess 메소드가 불려 갑니다.

이 메소드에 의해,SecurityException 가 throw 되는 경우가 있습니다. Object 클래스의 wait() ,wait(long) , 또는 wait(long, int) 메소드의 호출해, 또는 이 클래스의 join() ,join(long) ,join(long, int) ,sleep(long) , 또는 sleep(long, int) 메소드의 호출로 이 thread가 블록 되는 경우, 인터럽트 상태는 클리어 되어InterruptedException 를 받습니다.

interruptible channel 에 대한 I/O 조작으로 이 thread가 블록 되는 경우, 채널은 닫혀져 thread의 인터럽트 상태가 설정됩니다. 또, thread는 ClosedByInterruptException 를 받습니다.

Selector 로 이 thread가 블록 되는 경우, thread의 인터럽트 상태가 설정되어, 선택 조작으로부터 즉석에서 돌려주어집니다. 일반적으로, 반환되는 값은, 셀렉터의 wakeup 메소드가 불려 갔을 경우와 같이, 제로 이외의 값이 됩니다.

전술의 조건의 어느 것에도 들어맞지 않는 경우, 이 thread의 인터럽트 상태가 설정됩니다.

생존하고 있지 않는 thread가 인터럽트를 받는 것이, 효과를 가질 필요가 없는 경우

예외:
SecurityException - 현재의 thread가 이 thread를 변경할 수 없는 경우

interrupted

public static boolean interrupted()
현재의 thread가 끼어들어지고 있는지 어떤지를 조사합니다. 이 메소드에 의해 thread의 「인터럽트 상태」가 클리어 됩니다. 즉, 이 메소드가 계속해 2 회 불려 갔을 경우, 2 번째의 호출은 false 를 돌려줍니다 (최초의 호출이 끼어들어 상태를 클리어 한 후에, 2 번째의 호출이 그것을 확인하기 전에 현재의 thread가 한번 더 끼어들어졌을 경우를 제외하다).

thread가 인터럽트의 시점에서 생존하고 있지 않았기(위해)때문에 무시된 thread에서의 인터럽트는, 이 메소드에 의해 반영되어 false 를 돌려줍니다.

반환값:
현재의 thread가 끼어들어지고 있는 경우는 true, 그렇지 않은 경우는 false
관련 항목:
isInterrupted()

isInterrupted

public boolean isInterrupted()
이 thread가 끼어들어지고 있는 제발을 조사합니다. 이 메소드에 의해 thread의 「인터럽트 상태」가 영향을 받을 것은 없습니다.

thread가 인터럽트의 시점에서 생존하고 있지 않았기(위해)때문에 무시된 thread에서의 인터럽트는, 이 메소드에 의해 반영되어 false 를 돌려줍니다.

반환값:
이 thread가 끼어들어지고 있는 경우는 true, 그렇지 않은 경우는 false
관련 항목:
interrupted()

destroy

@Deprecated 
public void destroy()
추천 되고 있지 않습니다.  이 메소드는 원래 클린 업없이 파기되도록(듯이) 설계되고 있었습니다. 보관 유지되는 모니터는 락 된 상태를 유지합니다. 다만, 이 메소드는 구현되지 않았습니다. 구현되고 있으면(자),suspend() 와 거의 똑같이 데드락이 발생합니다. 타겟 thread가 중요한 system resource를 보호하는 락을 보관 유지한 상태로 파기되었을 경우, 어느 thread도 다시 이 자원에 액세스 할 수 없습니다. 다른 thread가 이 자원을 잠그려고 하면(자), 데드락이 발생합니다. 일반적으로, 이러한 데드락은, 프로세스의 「동결」에 의해 밝혀집니다. 자세한 것은, 이하를 참조해 주세요. Thread.stop, Thread.suspend, Thread.resume, 및 Runtime.runFinalizersOnExit 가 추천 되지 않는 이유

NoSuchMethodError 를 throw 합니다.

예외:
NoSuchMethodError - always

isAlive

public final boolean isAlive()
이 thread가 생존하고 있을지 어떨지를 판정합니다. 지정된 ID 의 thread가 기동되어 생존하고 있는 경우, thread는 생존하고 있습니다.

반환값:
이 thread가 생존하고 있는 경우는 true, 그렇지 않은 경우는 false

suspend

@Deprecated 
public final void suspend()
추천 되고 있지 않습니다.  이 메소드는 데드락을 발생하기 쉽기 때문에 추천 되지 않습니다. 타겟 thread가, 중단되는 시점에서, 중요한 system resource를 보호하는 모니터를 잠그고 있는 경우, 타겟 thread가 재개될 때까지 어느 thread도 그 자원에 액세스 할 수 없습니다. 이 때, 타겟 thread를 재개하는 thread가,resume 를 호출하기 전에 이 모니터를 잠그려고 하면(자), 데드락이 발생합니다. 일반적으로, 이러한 데드락은, 프로세스의 「동결」에 의해 밝혀집니다. 자세한 것은, 이하를 참조해 주세요. Thread.stop, Thread.suspend, Thread.resume, 및 Runtime.runFinalizersOnExit 가 추천 되지 않는 이유

이 thread를 중단합니다.  

우선, 이 thread의 checkAccess 메소드가, 인수없이 불려 갑니다. 이 결과, 현재의 thread로 SecurityException 가 throw 되는 일이 있습니다.  

thread는, 생존하고 있는 경우에 중단되어 재개되지 않는 처리를 먼저 진행할 수 없습니다.

예외:
SecurityException - 현재의 thread가 이 thread를 변경할 수 없는 경우
관련 항목:
checkAccess()

resume

@Deprecated 
public final void resume()
추천 되고 있지 않습니다.  이 메소드는 데드락을 발생하기 쉽기 때문에 추천 되지 않습니다. suspend() 와 함께 사용하기 위해(때문에)인 만큼 제공되고 있습니다. 자세한 것은, 이하를 참조해 주세요. Thread.stop, Thread.suspend, Thread.resume, 및 Runtime.runFinalizersOnExit 가 추천 되지 않는 이유

중단된 thread를 재개합니다.  

우선, 이 thread의 checkAccess 메소드가, 인수없이 불려 갑니다. 이 결과, 현재의 thread로 SecurityException 가 throw 되는 일이 있습니다.  

thread는, 생존하고 있지만 중단되고 있는 경우, 실행이 재개되어 처리를 먼저 진행하는 것이 허가됩니다.

예외:
SecurityException - 현재의 thread가 이 thread를 변경할 수 없는 경우
관련 항목:
checkAccess() , suspend()

setPriority

public final void setPriority(int newPriority)
이 thread의 우선 순위를 변경합니다.  

우선, 이 thread의 checkAccess 메소드가, 인수없이 불려 갑니다. 그 결과,SecurityException 가 throw 되는 일이 있습니다.  

그렇지 않은 경우, 이 thread의 우선 순위는, 지정된 newPriority 와 thread의 thread 그룹의 최고 허용 우선 순위 중의 어느 쪽인지 작은 (분)편으로 설정됩니다.

파라미터:
newPriority - 이 thread를 설정하는 우선 순위
예외:
IllegalArgumentException - 우선 순위가 MIN_PRIORITY ~ MAX_PRIORITY 의 범위외인 경우
SecurityException - 현재의 thread가 이 thread를 변경할 수 없는 경우
관련 항목:
getPriority() , checkAccess() , getThreadGroup() , MAX_PRIORITY , MIN_PRIORITY , ThreadGroup.getMaxPriority()

getPriority

public final int getPriority()
이 thread의 우선 순위를 돌려줍니다.

반환값:
이 thread의 우선 순위
관련 항목:
setPriority(int)

setName

public final void setName(String  name)
이 thread의 이름을 인수 name 에 동일해지도록(듯이) 변경합니다.  

우선, 이 thread의 checkAccess 메소드가, 인수없이 불려 갑니다. 그 결과,SecurityException 가 throw 되는 일이 있습니다.

파라미터:
name - 이 thread의 새로운 이름
예외:
SecurityException - 현재의 thread가 이 thread를 변경할 수 없는 경우
관련 항목:
getName() , checkAccess()

getName

public final String  getName()
이 thread의 이름을 돌려줍니다.

반환값:
이 thread의 이름
관련 항목:
setName(String)

getThreadGroup

public final ThreadGroup  getThreadGroup()
이 thread가 소속하는 thread 그룹을 돌려줍니다. 이 thread가 종료되고 있는 (정지되고 있다) 경우, 이 메소드는 null 를 돌려줍니다.

반환값:
이 thread의 thread 그룹

activeCount

public static int activeCount()
현행 thread의 thread 그룹내의 액티브한 thread수를 돌려줍니다.

반환값:
현행 thread의 thread 그룹내의 액티브한 thread수

enumerate

public static int enumerate(Thread [] tarray)
현행 thread의 thread 그룹 및 그 하위 그룹내의 모든 액티브한 thread를, 지정된 배열에 카피합니다. 이 메소드는, 현행 thread의 thread 그룹의 enumerate 메소드를, 배열 인수를 지정해 호출할 뿐입니다.  

시큐리티 매니저가 존재하는 경우,enumerate 메소드는, thread 그룹을 인수로서 시큐리티 매니저의 checkAccess 메소드를 호출합니다. 그 결과,SecurityException 가 throw 되는 일이 있습니다.

파라미터:
tarray - Thread 객체의 카피처 배열
반환값:
배열에 포함되는 thread수
예외:
SecurityException - 시큐리티 매니저가 존재해, 시큐리티 매니저의 checkAccess 메소드가 이 조작을 허가하지 않는 경우
관련 항목:
ThreadGroup.enumerate(Thread[]) , SecurityManager.checkAccess(ThreadGroup)

countStackFrames

@Deprecated 
public int countStackFrames()
추천 되고 있지 않습니다.  이 호출의 정의는, 추천되어 있지 않은 suspend() 에 의존합니다. 또, 이 호출의 결과는 보증되지 않습니다.

이 thread내의 스택 프레임수를 카운트 합니다. thread는 중단될 필요가 있습니다.

반환값:
이 thread내의 스택 프레임의 수
예외:
IllegalThreadStateException - 이 thread가 중단되어 있지 않은 경우

join

public final void join(long millis)
                throws InterruptedException 
이 thread가 종료하는 것을, 최고로 millis 밀리 세컨드 대기합니다. 의 타임 아웃은 영원히 대기하는 것을 의미합니다.

파라미터:
millis - 밀리 세컨드 단위의 대기 시간
예외:
InterruptedException - 어떠한 thread가 현재의 thread에 끼어들었을 경우. 이 예외가 throw 되면(자), 현재의 thread의 「인터럽트 상태」는 클리어 된다

join

public final void join(long millis,
                       int nanos)
                throws InterruptedException 
최고로 millis 밀리 세컨드에 nanos 나노초를 가산한 사이, 이 thread가 종료하는 것을 대기합니다.

파라미터:
millis - 밀리 세컨드 단위의 대기 시간
nanos - 대기하기 위한 0 ~ 999999 의 추가 나노초
예외:
IllegalArgumentException - millis 의 값이 음수의 경우, 또는 nanos 의 값이 0 ~ 999999 의 범위외의 경우
InterruptedException - 어떠한 thread가 현재의 thread에 끼어들었을 경우. 이 예외가 throw 되면(자), 현재의 thread의 「인터럽트 상태」는 클리어 된다

join

public final void join()
                throws InterruptedException 
이 thread가 종료하는 것을 대기합니다.

예외:
InterruptedException - 어떠한 thread가 현재의 thread에 끼어들었을 경우. 이 예외가 throw 되면(자), 현재의 thread의 「인터럽트 상태」는 클리어 된다

dumpStack

public static void dumpStack()
현재의 thread의 스택 트레이스를 표준 에러 스트림에 출력합니다. 이 메소드는 디버그의 경우에만 사용합니다.

관련 항목:
Throwable.printStackTrace()

setDaemon

public final void setDaemon(boolean on)
이 thread를, demon thread 또는 사용자 thread로서 마크 합니다. Java 가상 머신은, 실행중의 thread가 demon thread만으로 되면(자) 종료합니다.  

이 메소드는, thread 기동전에 호출할 필요가 있습니다.  

이 메소드는, 인수없이 이 thread의 checkAccess 메소드를 호출합니다. 이 결과, 현재의 thread로 SecurityException 가 throw 되는 일이 있습니다.

파라미터:
on - true 의 경우, 이 thread를 demon thread로서 마크 한다
예외:
IllegalThreadStateException - 이 thread가 액티브한 경우
SecurityException - 현재의 thread가 이 thread를 변경할 수 없는 경우
관련 항목:
isDaemon() , checkAccess()

isDaemon

public final boolean isDaemon()
이 thread가 demon thread일지 어떨지를 판정합니다.

반환값:
이 thread가 demon thread인 경우는 true, 그렇지 않은 경우는 false
관련 항목:
setDaemon(boolean)

checkAccess

public final void checkAccess()
현재 실행중의 thread가, 이 thread를 변경하기 위한 액세스권을 가지고 있을지 어떨지를 판정합니다.  

시큐리티 매니저가 존재하는 경우, 이 thread가 그 인수로 지정되어 checkAccess 메소드가 불려 갑니다. 그 결과,SecurityException 가 throw 되는 일이 있습니다.

예외:
SecurityException - 현재의 thread가 이 thread에의 액세스가 용서되지 않은 경우
관련 항목:
SecurityManager.checkAccess(Thread)

toString

public String  toString()
thread의 이름, 우선 순위, thread 그룹을 포함한 이 thread의 캐릭터 라인 표현을 돌려줍니다.

오버라이드(override):
클래스 Object 내의 toString
반환값:
이 thread의 캐릭터 라인 표현

getContextClassLoader

public ClassLoader  getContextClassLoader()
이 Thread 의 문맥 ClassLoader 를 돌려줍니다. 문맥 ClassLoader 는, 클래스 및 자원을 로드할 때, 이 thread로 실행중의 코드가 사용하기 위해서 thread의 작성 측에야는 제공됩니다. 문맥 ClassLoader 가 설정되어 있지 않은 경우, 디폴트에서는 친 Thread 의 ClassLoader 문맥이 됩니다. 일반적으로, 친thread의 문맥 ClassLoader 는, 어플리케이션의 로드에 사용되는 클래스 로더로 설정됩니다.

시큐리티 매니저가 존재하는 경우, 호출측의 클래스 로더가 null 는 아니고, 문맥 클래스 로더가 요구되고 있는 thread의 문맥 클래스 로더와 같지 않고, 그 문맥 클래스 로더의 상위 객체도 아닐 때는, 문맥 ClassLoader 를 취득해도 괜찮은지 어떤지를 확인하기 위해서,RuntimePermission("getClassLoader") 액세스권을 사용해, 시큐리티 매니저의 checkPermission 메소드가 불려 갑니다.

반환값:
이 Thread 의 문맥 ClassLoader
예외:
SecurityException - 시큐리티 매니저가 존재해, 시큐리티 매니저의 checkPermission 메소드가 문맥 ClassLoader 의 취득을 허가하지 않는 경우
도입된 버젼:
1.2
관련 항목:
setContextClassLoader(java.lang.ClassLoader) , SecurityManager.checkPermission(java.security.Permission) , RuntimePermission

setContextClassLoader

public void setContextClassLoader(ClassLoader  cl)
이 Thread 의 문맥 ClassLoader 를 설정합니다. 문맥 ClassLoader 는 thread의 작성시로 설정되어 이것에 의해 thread의 작성측은, 클래스 및 자원의 로드시에 thread로 실행중의 코드에 적절한 클래스 로더를 제공할 수 있게 됩니다.

시큐리티 매니저가 존재하는 경우, 최초로, 문맥 ClassLoader 를 설정해도 좋은지 어떤지를 조사하기 위해서(때문에) RuntimePermission("setContextClassLoader") 액세스권을 사용해 checkPermission 메소드가 불려 갑니다.

파라미터:
cl - 이 Thread 의 문맥 ClassLoader
예외:
SecurityException - 현재의 thread가 문맥 ClassLoader 를 설정할 수 없는 경우
도입된 버젼:
1.2
관련 항목:
getContextClassLoader() , SecurityManager.checkPermission(java.security.Permission) , RuntimePermission

holdsLock

public static boolean holdsLock(Object  obj)
현행 thread가 지정된 객체에 대한 모니터 락을 보관 유지하는 경우에게만,true 를 돌려줍니다.

이 메소드는, 이하와 같이, 프로그램이, 현행 thread가 지정된 락을 벌써 보관 유지하고 있는 것을 나타낼 때에 사용됩니다.

assert Thread.holdsLock(obj);
 

파라미터:
obj - 소유권의 락을 테스트하는 객체
반환값:
현행 thread가 지정된 객체에 대한 모니터 락을 보관 유지하는 경우,true 가 반환된다
예외:
NullPointerException - obj 가 null 의 경우
도입된 버젼:
1.4

getStackTrace

public StackTraceElement [] getStackTrace()
이 thread의 스택 덤프를 나타내는 스택 트레이스 요소의 배열을 돌려줍니다. 이 thread가 기동하고 있지 않았던 경우나 종료하고 있었을 경우, 이 메소드는 제로의 길이의 배열을 돌려줍니다. 반환된 배열이 제로 이외의 길이의 배열인 경우, 배열의 최초의 요소는 스택의 최상부를 나타냅니다. 이것은 순서로 불려 간 가장 새로운 메소드입니다. 배열의 마지막 요소는, 스택의 저부를 나타냅니다. 이것은 순서로 불려 간 가장 낡은 메소드입니다.

이것은 순서로 불려 간 가장 낡은 메소드입니다. 시큐리티 매니저가 존재해, 이 thread가 현재의 thread가 아닌 경우, 스택 트레이스를 취득해도 좋은지 어떤지를 조사하기 위해서(때문에),RuntimePermission("getStackTrace") 액세스권을 사용해 시큐리티 매니저의 checkPermission 메소드가 불려 갑니다.

가상 머신안에는, 특정의 상황하로 스택 트레이스로부터 1 개 이상의 스택 프레임을 생략 하는 것이 있습니다. 극단적인 경우, 이 thread에 관한 스택 트레이스 정보를 가지지 않는 가상 머신이, 이 메소드로부터 길이 제로의 배열을 돌려주는 것이 허가됩니다.

반환값:
1 개의 스택 프레임을 나타내는 StackTraceElement 의 배열
예외:
SecurityException - 시큐리티 매니저가 존재해, 시큐리티 매니저의 checkPermission 메소드가 thread의 스택 트레이스의 취득을 허가하지 않는 경우
도입된 버젼:
1.5
관련 항목:
SecurityManager.checkPermission(java.security.Permission) , RuntimePermission , Throwable.getStackTrace()

getAllStackTraces

public static Map <Thread ,StackTraceElement []> getAllStackTraces()
모든 라이브 thread의 스택 트레이스 맵을 돌려줍니다. 맵 키는 thread입니다. 또, 각 맵의 값은 대응하는 Thread 의 스택 덤프를 나타내는 StackTraceElement 의 배열입니다. 반환된 스택 트레이스는,getStackTrace 메소드에 대해서 지정된 포맷입니다.

이 메소드가 불려 가고 있는 동안에, thread가 실행되고 있을 가능성이 있습니다. 각 thread의 스택 트레이스는, snapshot를 나타낼 뿐입니다. 각 스택 트레이스는 다른 시기에 취득할 수 있습니다. 가상 머신이 thread에 관한 스택 트레이스 정보를 가지지 않는 경우, 맵치에 길이 제로의 배열이 돌려주어집니다.

시큐리티 매니저가 존재해, 이 thread가 현재의 thread가 아닌 경우, 모든 thread의 스택 트레이스를 취득해도 좋은지 어떤지를 조사하기 위해서(때문에),RuntimePermission("getStackTrace") 액세스권과 RuntimePermission("modifyThreadGroup") 액세스권을 사용해 시큐리티 매니저의 checkPermission 메소드가 불려 갑니다.

반환값:
Thread 로부터, 대응하는 thread의 스택 트레이스를 나타내는 StackTraceElement 의 배열까지의 Map
예외:
SecurityException - 시큐리티 매니저가 존재해, 시큐리티 매니저의 checkPermission 메소드가 thread의 스택 트레이스의 취득을 허가하지 않는 경우
도입된 버젼:
1.5
관련 항목:
getStackTrace() , SecurityManager.checkPermission(java.security.Permission) , RuntimePermission , Throwable.getStackTrace()

getId

public long getId()
이 thread의 식별자를 돌려줍니다. thread ID 는, thread가 작성되었을 때에 생성된 정의 long 형의 숫자입니다. thread ID 는 일의이며, 그 수명을 통해서 변경될 것은 없습니다. thread가 종료하면(자), thread ID 는 재사용 가능합니다.

반환값:
이 thread의 ID
도입된 버젼:
1.5

getState

public Thread.State  getState()
이 thread 상태를 돌려줍니다. 이 메소드는, 동기의 제어용으로서가 아니고, 시스템 상태의 감시용으로서 설계되고 있습니다.

반환값:
이 thread 상태
도입된 버젼:
1.5

setDefaultUncaughtExceptionHandler

public static void setDefaultUncaughtExceptionHandler(Thread.UncaughtExceptionHandler  eh)
캐치 되지 않는 예외에 의해, thread가 돌연 종료했을 때나, 이 thread에 대해서 그 밖에 핸들러가 정의되어 있지 않을 때에 불려 가는 디폴트의 핸들러를 설정합니다.

캐치 되지 않는 예외의 취급은 thread에 의해 우선 제어되어 다음에 thread ThreadGroup 객체에 의해, 최종적으로는 디폴트의 캐치 되지 않는 예외 핸들러에 의해 제어됩니다. thread가 명시적인 캐치 되지 않는 예외 핸들러 세트를 가지지 않는 경우, thread의 thread 그룹 (친thread 그룹을 포함한다)은,uncaughtException 메소드를 특수화 하지 않습니다. 다음에, 디폴트 핸들러의 uncaughtException 메소드가 불려 갑니다.  

디폴트의 캐치 되지 않는 예외 핸들러를 설정하는 것으로, 어플리케이션에서는, 시스템으로 제공된 「디폴트」의 동작을 벌써 받아들이고 있는 thread의 캐치 되지 않는 예외를 취급하는 방법 (특정의 디바이스나 파일에의 로그인등)을 변경할 수 있습니다.

일반적으로, 디폴트의 캐치 되지 않는 예외 핸들러는, thread의 ThreadGroup 객체와 달라서는 안됩니다. 이것은, 무한의 재귀를 부를 가능성이 있기 때문입니다.

파라미터:
eh - 디폴트의 캐치 되지 않는 예외 핸들러로서 사용하는 객체. null 의 경우, 디폴트의 핸들러는 없다
예외:
SecurityException - 시큐리티 매니저가 존재해,RuntimePermission ("setDefaultUncaughtExceptionHandler") 를 거부했을 경우
도입된 버젼:
1.5
관련 항목:
setUncaughtExceptionHandler(java.lang.Thread.UncaughtExceptionHandler) , getUncaughtExceptionHandler() , ThreadGroup.uncaughtException(java.lang.Thread, java.lang.Throwable)

getDefaultUncaughtExceptionHandler

public static Thread.UncaughtExceptionHandler  getDefaultUncaughtExceptionHandler()
캐치 되지 않는 예외에 의해 thread가 돌연 종료했을 때에 불려 가는 디폴트의 핸들러를 돌려줍니다. 반환값이 null 의 경우, 디폴트의 핸들러는 없습니다.

도입된 버젼:
1.5
관련 항목:
setDefaultUncaughtExceptionHandler(java.lang.Thread.UncaughtExceptionHandler)

getUncaughtExceptionHandler

public Thread.UncaughtExceptionHandler  getUncaughtExceptionHandler()
캐치 되지 않는 예외에 의해 thread가 돌연 종료했을 때에 불려 가는 핸들러를 돌려줍니다. 이 thread가 명시적으로 설정된 캐치 되지 않는 예외 핸들러를 가지지 않는 경우, thread가 종료하지 않는 한, thread의 ThreadGroup 객체가 돌려주어집니다. 이 경우,null 가 돌려주어집니다.

도입된 버젼:
1.5

setUncaughtExceptionHandler

public void setUncaughtExceptionHandler(Thread.UncaughtExceptionHandler  eh)
캐치 되지 않는 예외에 의해, 돌연 thread가 종료했을 때에 사용되는 핸들러를 설정합니다.  

캐치 되지 않는 예외 핸들러를 명시적으로 설정하는 것으로, thread는 캐치 되지 않는 예외를 완전하게 제어할 수 있습니다. 이러한 핸들러가 설정되어 있지 않은 경우는, thread의 ThreadGroup 객체가 핸들러로서 기능합니다.

파라미터:
eh - thread의 캐치 되지 않는 예외 핸들러로서 사용되는 객체. null 의 경우, thread는 명시적인 핸들러를 가지지 않는다
예외:
SecurityException - 현재의 thread가 이 thread의 변경이 용서되지 않은 경우
도입된 버젼:
1.5
관련 항목:
setDefaultUncaughtExceptionHandler(java.lang.Thread.UncaughtExceptionHandler) , ThreadGroup.uncaughtException(java.lang.Thread, java.lang.Throwable)

JavaTM Platform
Standard Ed. 6

버그의 보고와 기능의 요청
한층 더 자세한 API 레퍼런스 및 개발자 문서에 대해서는,Java SE 개발자용 문서를 참조해 주세요. 개발자전용의 상세한 해설, 개념의 개요, 용어의 정의, 버그의 회피책, 및 코드 실례가 포함되어 있습니다.

Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms . Documentation Redistribution Policy 도 참조해 주세요.