/* * Copyright (C) 2007 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package java.lang; class VMThread { Thread thread; int vmData; VMThread(Thread t) { thread = t; } native static void create(Thread t, long stackSize); static native Thread currentThread(); static native boolean interrupted(); static native void sleep (long msec, int nsec) throws InterruptedException; static native void yield(); native void interrupt(); native boolean isInterrupted(); /** * Starts the VMThread (and thus the Java Thread) with the given * stack size. */ void start(long stackSize) { VMThread.create(thread, stackSize); } /** * Queries whether this Thread holds a monitor lock on the * given object. */ native boolean holdsLock(Object object); native void setPriority(int newPriority); native int getStatus(); /** * Holds a mapping from native Thread statuses to Java one. Required for * translating back the result of getStatus(). */ static final Thread.State[] STATE_MAP = new Thread.State[] { Thread.State.TERMINATED, // ZOMBIE Thread.State.RUNNABLE, // RUNNING Thread.State.TIMED_WAITING, // TIMED_WAIT Thread.State.BLOCKED, // MONITOR Thread.State.WAITING, // WAIT Thread.State.NEW, // INITIALIZING Thread.State.NEW, // STARTING Thread.State.RUNNABLE, // NATIVE Thread.State.WAITING, // VMWAIT Thread.State.RUNNABLE // SUSPENDED }; /** * Tell the VM that the thread's name has changed. This is useful for * DDMS, which would otherwise be oblivious to Thread.setName calls. */ native void nameChanged(String newName); }