• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2007 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package java.lang;
18 
19 class VMThread {
20     Thread thread;
21     int vmData;
22 
VMThread(Thread t)23     VMThread(Thread t) {
24         thread = t;
25     }
26 
create(Thread t, long stackSize)27     native static void create(Thread t, long stackSize);
28 
currentThread()29     static native Thread currentThread();
interrupted()30     static native boolean interrupted();
sleep(long msec, int nsec)31     static native void sleep (long msec, int nsec) throws InterruptedException;
yield()32     static native void yield();
33 
interrupt()34     native void interrupt();
35 
isInterrupted()36     native boolean isInterrupted();
37 
38     /**
39      *  Starts the VMThread (and thus the Java Thread) with the given
40      *  stack size.
41      */
start(long stackSize)42     void start(long stackSize) {
43         VMThread.create(thread, stackSize);
44     }
45 
46     /**
47      * Queries whether this Thread holds a monitor lock on the
48      * given object.
49      */
holdsLock(Object object)50     native boolean holdsLock(Object object);
51 
setPriority(int newPriority)52     native void setPriority(int newPriority);
getStatus()53     native int getStatus();
54 
55     /**
56      * Holds a mapping from native Thread statuses to Java one. Required for
57      * translating back the result of getStatus().
58      */
59     static final Thread.State[] STATE_MAP = new Thread.State[] {
60         Thread.State.TERMINATED,     // ZOMBIE
61         Thread.State.RUNNABLE,       // RUNNING
62         Thread.State.TIMED_WAITING,  // TIMED_WAIT
63         Thread.State.BLOCKED,        // MONITOR
64         Thread.State.WAITING,        // WAIT
65         Thread.State.NEW,            // INITIALIZING
66         Thread.State.NEW,            // STARTING
67         Thread.State.RUNNABLE,       // NATIVE
68         Thread.State.WAITING,        // VMWAIT
69         Thread.State.RUNNABLE        // SUSPENDED
70     };
71 
72     /**
73      * Tell the VM that the thread's name has changed.  This is useful for
74      * DDMS, which would otherwise be oblivious to Thread.setName calls.
75      */
nameChanged(String newName)76     native void nameChanged(String newName);
77 }
78