next up previous
Next: 6.1.1 クラスButton.java Up: 6 Viewプログラムで利用されているクラス,インタフェース Previous: 6 Viewプログラムで利用されているクラス,インタフェース

6.1 クラスThread.java


package java.lang;

/**
 * A thread of execution (or task).
 * Now handles priorities, daemon threads
 * and interruptions.
 */
public abstract class Thread
{
  /**
   * The minimum priority that a thread can have.
   * The value is 1.
   */
  public final static int MIN_PRIORITY = 1;

 /**
  * The priority that is assigned to the
  * primordial thread. The value is 5.
  */
  public final static int NORM_PRIORITY = 5;

  /**
   * The maximum priority that a
   * thread can have. The value is 10.
   */
  public final static int MAX_PRIORITY = 10;

  // Note 1: This class cannot
  // have a static initializer.

  // Note 2: The following fields are used by the VM.
  // Their sizes and location can only be changed
  // if classes.h is changed accordingly. Needless
  // to say, they are read-only.

  private Thread _TVM_nextThread;
  private int _TVM_waitingOn;
  private int _TVM_sleepUntil;
  private int _TVM_stackFrameArray;
  private int _TVM_stackArray;
  private byte _TVM_stackFrameArraySize;
  private byte _TVM_monitorCount;
  private byte _TVM_threadId; 
  private byte _TVM_state; 
  private byte _TVM_priority; 
  private byte _TVM_interrupted; 
  private byte _TVM_daemon; 

  // Extra instance state follows:
  
  private String name;

  public final boolean isAlive()
  {
    return _TVM_state > 1;
  }    
          
  public Thread()
  {
    this ("");
  }

  public Thread (String name)
  {
          Thread t = currentThread();
        if (t == null)
                setPriority(NORM_PRIORITY);
        else
                setPriority(t.getPriority());        
    this.name = name;
  }

  public abstract void run();
  
  public final native void start();
  public static native void yield();
  public static native void sleep
     (long aMilliseconds) throws
      InterruptedException;
  public static native Thread currentThread();
  public final native int getPriority();
  /**
   * Set the priority of this thread.
   * Higher number have higher priority.
   * The scheduler will always run
   * the highest priority thread in preference
   * to any others. If more than one
   * thread of that priority exists the
   * scheduler will time-slice them.
   * In order for lower priority threas
   * to run a higher priority thread must
   * cease to be runnable. i.e. it
   * must exit, sleep or wait on a monitor.
   * It is not sufficient to just
   * yield.
   * <P>
   * Threads inherit the priority of
   * their parent. The primordial thread
   * has priority NORM_PRIORITY.
   *
   * @param priority must be between
   *      MIN_PRIORITY and MAX_PRIORITY.
   */

  public final native void
         setPriority(int priority);
  
  /**
   * Set the interrupted flag.
   * If we are asleep we will wake up
   * and an InterruptedException will be thrown.
   */

  public native void interrupt();
  public static native boolean interrupted();
  public final native boolean isInterrupted();
  
  /**
   * Set the daemon flag. If a thread is
   * a daemon thread its existence will
   * not prevent a JVM from exiting.
   */
  public final native boolean isDaemon();
  public final native void setDaemon(boolean on);
  
  /**
   * Join not yet implemented
   */
  public final native void join()
             throws InterruptedException;
  public final native void join(long timeout)
             throws InterruptedException;
}




generated through LaTeX2HTML. M.Inaba 平成18年5月6日